Databases

T01-009-02 Composiciones internas con JOIN

Enunciado

Hemos dicho que el resultado de una composición interna lo podemos manejar como otra tabla más. En concreto, el resultado de una composición interna puede formar parte de una composición interna mayor con otra tabla y así sucesivamente.

Es decir, podríamos tener en la cláusula FROM una composición como la siguiente:

FROM tabla1 JOIN tabla2 ON (tabla1.atributo1 = tabla2.atributo2) JOIN tabla3 ON (tabla2.atributo2 = tabla3.atributo3)

Ejemplo:

La siguiente sentencia muestra los departamentos que están en el país cuyo nombre es 'United Kingdom'.

SELECT DEPARTMENT_NAME, COUNTRY_NAME
FROM HR.departments JOIN HR.locations USING (LOCATION_ID) JOIN HR.countries USING (COUNTRY_ID)
WHERE COUNTRY_NAME = 'United Kingdom'

Hay que observar que, en este caso, hemos utilizado USING porque la relación la estamos haciendo entre dos atributos que tienen el mismo nombre, aunque también podríamos haber utilizado ON:

OON (departments.LOCATION_ID = locations.LOCATION_ID)

 

DEPARTMENT_NAME COUNTRY_NAME
Human Resources United Kingdom
Sales United Kingdom

Aunque en el SELECT sólo utilizamos atributos de las tablas departments y countries, en el FROM necesitamos incluir también la tabla locations porque no es posible alcanzar countries desde departments, sin pasar por locations. Puedes comprobarlo en la imagen correspondiente al esquema HR:

esquema HR

Ejercicio

Muestra el nombre y apellidos de los empleados que tenemos trabajando en alguno de los departamentos situados en la ciudad de Toronto.

Ordena el resultado por los apellidos de los empleados.

Tipo

SELECT

Solución


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

Prueba


											

Librerías (Onfly databases)