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 defined

Cuando 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

SELECT

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)