Databases

T01-009-02 Composiciones internas con JOIN

Enunciado

NATURAL JOIN hay que usarlo con mucho cuidado, ya que, en ocasiones, puede devolvernos resultados inesperados. Por ejemplo, si quisiéramos relacionar, en una consulta con NATURAL JOIN, las tablas de empleados y departamentos, el servidor encontraría dos atributos con el mismo nombre en cada una de las tablas (DEPARTMENT_ID y MANAGER_ID) ¿Cuál elegiría para relacionar ambas tablas?

JOIN USING

Esta cláusula permite establecer relaciones indicando qué campo o campos comunes se quieren utilizar para ello.

Ejemplo

En la siguiente consulta se muestran los empleados del departamento con nombre 'IT', indicando que se debe utilizar el atributo DEPARTMENT_ID para relacionar los registros de ambas tablas. Es decir, los empleados que, en el atributo DEPARTMENT_ID tienen el mismo valor que el registro de departamentos que tiene por nombre 'IT'?

SELECT FIRST_NAME, LAST_NAME, DEPARTMENT_NAME
FROM HR.employees JOIN HR.departments USING(DEPARTMENT_ID)
WHERE DEPARTMENT_NAME = 'IT'
ORDER BY LAST_NAME

Ejercicio

Muestra el nombre, apellidos y tiempo en el que se han registrado cambios de trabajo (job_history) en el departamento 50. Utiliza para ello el atributo EMPLOYEE_ID, que está presente en ambas tablas.

Ordena el resultado alfabéticamente por apellidos.

Tipo

SELECT

Solución


												
SELECT FIRST_NAME, LAST_NAME, START_DATE, END_DATE FROM HR.employees JOIN HR.job_history USING(EMPLOYEE_ID) WHERE job_history.DEPARTMENT_ID = 50 ORDER BY LAST_NAME

Prueba


											

Librerías (Onfly databases)