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
SELECTsólo utilizamos atributos de las tablasdepartmentsycountries, en elFROMnecesitamos incluir también la tablalocationsporque no es posible alcanzarcountriesdesdedepartments, sin pasar porlocations. Puedes comprobarlo en la imagen correspondiente al 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
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)


