Databases
T01-009-01 Producto cartesiano
Enunciado
Una vez conseguido el producto cartesiano o la combinación interna, podremos añadir restricciones al resultado como si fuera una tabla más. Es decir, podremos:
- restringir el número de atributos que queremos mostrar en el resultado.
- añadir restricciones en la cláusula
WHERE.¡¡CUIDADO¡¡ Un error muy común es la de utilizar, en una consulta multitabla, el nombre de un atributo que se repite en más de una tabla. El resultado es el que se muestra:
SELECT REGION_ID, COUNTRY_NAME
FROM HR.regions, HR.countries
WHERE
regions.REGION_ID = countries.REGION_ID
AND
REGION_NAME = 'Europe'
ORA-00918: column ambiguously definedCuando eso ocurra, nos debemos señalar de cual de las tablas queremos obtener ese valor, anteponiéndolo al nombre del atributo y separándolo por un
.:
SELECT regions.REGION_ID, COUNTRY_NAME
FROM HR.regions, HR.countries
WHERE
regions.REGION_ID = countries.REGION_ID
AND
REGION_NAME = 'Europe'
REGION_ID COUNTRY_NAME 1 Netherlands 1 France 1 United Kingdom 1 Denmark 1 Belgium 1 Switzerland 1 Italy 1 Germany Ejemplo:
Muestra los nombres de los países que se encuentran en la región 'Europe'.
SELECT COUNTRY_NAME
FROM HR.regions, HR.countries
WHERE
regions.REGION_ID = countries.REGION_ID
AND
REGION_NAME = 'Europe'
COUNTRY_NAME Netherlands France United Kingdom Denmark Belgium Switzerland Italy Germany Ejercicio:
Muestra el nombre y apellidos de los empleados que se trabajan en el departamento de 'Marketing'.
Ordena el resultado alfabéticamente por apellidos.
Tipo
Solución
SELECT FIRST_NAME, LAST_NAME
FROM HR.employees, HR.departments
WHERE
employees.DEPARTMENT_ID = departments.DEPARTMENT_ID
AND
DEPARTMENT_NAME = 'Marketing'
ORDER BY LAST_NAME
Prueba
LibrerÃas (Onfly databases)

