0

mi problema es el siguiente, tengo una tabla donde tiene una llave foranea que es de la misma tabla, esta es para poder hacer jefes a los mismos empleados, la tabla es la siguiente:Tabla_Empleado

entonces, mi duda es, como puedo saber el nombre del jefe, hasta ahora hice este intento pero en la columna de jefes me sale null:

select id_empleado, nombre_empleado, (select nombre_empleado from empleado where jefe=id_empleado) from empleado

introducir la descripción de la imagen aquí

  • Esta pregunta es muy similar a [esta otra](https://es.stackoverflow.com/q/450423/21) por lo que supongo que [su respuesta](https://es.stackoverflow.com/a/450435/21) te será igualmente útil. – jachguate May 12 '21 at 04:56

1 Answers1

0

Una tabla con una relación con ella misma se conoce también como una relación recursiva y se usa mucho para modelar jerarquías como en el ejemplo q planteas, tu consulta podría quedar de esta forma

select e1.nombreEmpleado as Empleado, e2.NombreEmpleado as Jefe
from empleado e1 inner join empleado e2 on e1.idJefe = e2.idJefe

Aquí se enlaza la tabla con ella misma a traves de un inner join, como es la misma tabla se establecen alias de e1 y e2 para diferenciar. El inner join se usa para juntar tablas teniendo en cuenta ciertas condiciones, aquí la condición es que los idJefe de e1 y e2 sean iguales, por último se hace una selección de los campos que nos interesan, la selección devuelve el nombre del empleado pero un nombre será el del jefe y otro el del subordinado por eso a uno se le da como alias Empleado y al otro Jefe

Japv
  • 9,317
  • 8
  • 11
  • 29