1

Crear un select donde se muestre el nombre y apellido del empleado, departamento donde labora y el nombre y apellido del manager que lo coordina.

SELECT EMPLOYEES.FIRST_NAME||' '||EMPLOYEES.LAST_NAME AS "NOMBRE COMPLETO DEL EMPLEADO",DEPARTMENTS.DEPARTMENT_ID,DEPARTMENTS.DEPARTMENT_NAME,DEPARTMENTS.MANAGER_ID FROM EMPLOYEES,DEPARTMENTS WHERE EMPLOYEES.DEPARTMENT_ID=DEPARTMENTS.DEPARTMENT_ID

introducir la descripción de la imagen aquí Buenas necesito ayuda para esta consulta el problemas es que no se como sacar el nombre y apellido del manager que coordina el departamento

JJsCR
  • 99
  • 7

2 Answers2

2

Lo que requieres en este caso es hacer un SELF JOIN, es decir, hacer la unión de tablas con la misma tabla de EMPLOYEES para poder encontrar la información del manager.

El primer punto a corregir es dejar de usar JOIN implícito y empezar a usar JOIN explícito, ya que la funcionalidad de usar JOIN implícito se considera deprecada desde 1992.

La consulta quedaría de la siguiente manera:

SELECT 
     E.FIRST_NAME || ' ' || E.LAST_NAME AS "NOMBRE COMPLETO DEL EMPLEADO"
    ,D.DEPARTMENT_ID
    ,D.DEPARTMENT_NAME
    ,D.MANAGER_ID
    ,EE.FIRST_NAME || ' ' || EE.LAST_NAME AS "NOMBRE COMPLETO DEL MANAGER"
FROM EMPLOYEES E
    INNER JOIN DEPARTMENTS D
        ON E.DEPARMENT_ID = D.DEPARMENT_ID
    INNER JOIN EMPLOYEES EE
        ON E.MANAGER_ID = E.EMPLOYEE_ID

La magia ocurre en el JOIN:

INNER JOIN EMPLOYEES EE
        ON E.MANAGER_ID = E.EMPLOYEE_ID

Si logras notar, al igualar el campo MANAGER_ID con EMPLOYEE_ID estás diciendo que vas o obtener los datos del manager a través de su id de empleado, ya que el manager es de igual manera un empleado más.

Nota: Para mayor información acerca de las diferencias entre JOIN implícito y JOIN explícito, esta gran respuesta te puede aclarar el panorama.

Phi
  • 9,913
  • 5
  • 25
  • 47
1

Siguiendo la respuesta anterior como base a mi me funcionó asi

SELECT E.FIRST_NAME || ' ' || E.LAST_NAME AS EMPLEADO, 
       D.DEPARTMENT_NAME AS DEPARTAMENTO, 
       EE.FIRST_NAME || ' ' || EE.LAST_NAME AS MANAGER 
       FROM EMPLOYEES E, 
            DEPARTMENTS D 
       JOIN EMPLOYEES EE 
            ON (D.MANAGER_ID=EE.EMPLOYEE_ID);
Patricio Moracho
  • 54,367
  • 12
  • 35
  • 68