Databases

T01-009-02 Composiciones internas con JOIN

Enunciado

Las formas anteriores de realizar composiciones internas requieren que existan atributos con el mismo nombre en las dos tablas a relacionar y que el sus valores hagan referencia a propiedades similares.

JOIN ON

Se utiliza para unir tablas en la que los nombres de columna no coinciden en ambas tablas o se necesita establecer asociaciones más complicadas.

Ejemplo:

La siguiente sentencia relaciona a los empleados con sus jefes. A este tipo de relaciones se las denomina reflexivas, ya que utiliza la misma tabla en los dos lados del JOIN. Al utilizar 2 veces la misma tabla, estamos obligados a crear un alias de cada una de las tablas, en este caso EMPLEADO y MANAGER, para que, al hacer referencia a los atributos, podamos especificar de qué tabla queremos extraer el valor de dicho atributo.

SELECT
    EMPLEADO.FIRST_NAME AS "NOMBRE EMPLEADO",
    EMPLEADO.LAST_NAME AS "APELLIDO EMPLEADO",
    MANAGER.FIRST_NAME AS "NOMBRE JEFE",
    MANAGER.LAST_NAME AS "APELLIDO JEFE"
FROM HR.employees EMPLEADO JOIN HR.employees MANAGER
ON (EMPLEADO.MANAGER_ID = MANAGER.EMPLOYEE_ID)
ORDER BY EMPLEADO.LAST_NAME

Hay que observar que, en este caso, la relación la estamos haciendo entre dos atributos que no tienen el mismo nombre. Esa relación es:

ON (EMPLEADO.MANAGER_ID = MANAGER.EMPLOYEE_ID)

y la debemos leer como: relaciona aquellos registros en los que el valor del atributo MANAGER_ID del empleado es igual al valor del atributo EMPLOYEE_ID del manager.

NOMBRE EMPLEADO APELLIDO EMPLEADO NOMBRE JEFE APELLIDO JEFE
Ellen Abel Eleni Zlotkey
Sundar Ande Alberto Errazuriz
Mozhe Atkinson Adam Fripp
David Austin Alexander Hunold
Hermann Baer Neena Kochhar

Ejercicio

Muestra el nombre y apellidos de los jefes de cada uno de los departamentos, ordenándolos alfabéticamente por el nombre del departamento:

Tipo

SELECT

Solución


												
SELECT DEPARTMENT_NAME, FIRST_NAME, LAST_NAME FROM HR.departments JOIN HR.employees ON departments.MANAGER_ID = employees.EMPLOYEE_ID ORDER BY DEPARTMENT_NAME

Prueba


											

Librerías (Onfly databases)