Sie sind auf Seite 1von 20

Unidad IV

Parte II
Seleccin de mltiples tablas.
Hasta ahora todas las consultas que hemos usado se refieren slo a
una tabla, pero tambin es posible hacer consultas usando varias
tablas en la misma sentencia SELECT.
Esto nos permite realizar otras dos operaciones de lgebra relacional
que an no hemos visto: el producto cartesiano y la composicin.
Producto Cartesiano
El producto cartesiano de dos tablas son todas las combinaciones de
todas las filas de las dos tablas. Usando una sentencia SELECT se hace
proyectando todos los atributos de ambas tablas. Los nombres de las
tablas se indican en la clusula FROM separados con comas.
La salida consiste en todas las combinaciones de todas las tuplas de
ambas tablas.

SELECT *
FROM table_name, table_name;
Composicin (Join)
Recordemos que se trata de un producto cartesiano restringido, las
tuplas que se emparejan deben cumplir una determinada condicin.
Se usa para obtener datos de mas de una tabla.
Escribir la condicin join en la clausula WHERE.

SELECT table1.column, table2.column


FROM table1, table2
WHERE table1.column = table2.column;
Que es un Equijoin
Es el mas comn y utilizado de los Join.
Hace referencia a igualdad de campos de distintas tablas.
La forma mas comn de utilizarlos es con el operador = uniendo los
campos en cuestin.
Generalmente se utiliza la integridad referencial para crear join.

SELECT table1.column, table2.column


FROM table1, table2
WHERE table1.column = table2.column;
Ejercicios
Obtener el nombre, apellido de cada empleado adems de el nombre
del departamento donde trabaja.

Obtener el nombre, apellido de cada empleado adems de el nombre


del departamento donde trabaja y la ciudad donde queda.
Non-Equijoin
Al contrario que el EquisJoin, el Non-Equijoin se basa e la desigualdad
de campos, sin correspondencia directa entre campos de tablas.
La relacin se puede establecer mediante criterios de rango (<, >,
BETWEEN, ...).
Este tipo de Join no es muy utilizado.
Ejemplo
Posibles Grados en los cuales podra estar cada empleado segn su
salario actual.
Outer-Join
Para ver, tambin, las filas que no cumplen la condicin de Join.
El operador de un Outer Join es el signo ms (+) en el lado del join que es
deficiente en informacin.
Obtiene registros aunque no tengan valores asociados.

SELECT table1.column, table2.column


FROM table1, table2
WHERE table1.column = table2.column (+);

SELECT table1.column, table2.column


FROM table1, table2
WHERE table1.column (+) = table2.column;
Ejercicios
Mostrar los departamentos y los empleados que all trabajan.
Self Join
Combinacin de una tabla consigo misma.

SELECT table1.column1, table1.column2


FROM table1, table1
WHERE table1.column1 = table1.column2;
Ejercicio
Mostrar el nombre y apellido de todos los empleados y nombre y
apellido de su jefe, formando la siguiente frase para cada registro.
Nombre Apellido trabaja para Nombre Apellido
Subconsultas
Las subconsultas o consultas anidadas se utilizan para resolver
problemas especficos que no pueden ser resueltos por la sistaxis
tradicionales ya conocidas.
La subconsulta (consulta interna) se ejecuta antes de la consulta
principal.
El resultado de la subconsulta es utilizado para la consulta principal
(consulta externa).
Sintaxis
SELECT column1, column2
FROM table1
WHERE expr_operator
(SELECT column
FROM table
);
Ejercicio/Ejemplo
Que empleados tienen un salario mayor a Abel?
Pautas para usar Subconsultas
Encerrar subconsultas entre parntesis.
La subconsulta se ubica al lado derecho de la condicin de
comparacin.
Las clausulas ORDER BY en la subconsulta no es necesaria a menos
que se este realizando un anlisis TOP-N.
Usar operadores de Filas simples para subconsultas de filas simples y
operadores de mltiples filas para consultas de mltiples filas.
Subconsultas sobre filas simples
Retorna solo una fila.
Usar operadores de comparacin sobre una fila.

Operador Descripcin
= Igual
> Mayor que
>= Mayor igual que
< Menor
<= Menor igual que
<> Distinto
Ejercicios
Obtener apellido, id de cargo y salario de los empleados que tengan el
mismo cargo que el empleado con id 141 y salario mayor que el
empleado con id 143
Subconsultas sobre Mltiples filas
Retorna mas de una fila.
Se debe usar operadores de comparacin sobre mltiples filas.

Operador Descripcin
IN Igual a cualquier elemento de la lista
ANY Compara el valor con cada uno de los
valores retornados por la subconsulta.
ALL Compara el valor para todos los valores
retornados por la subconsulta.
Usando Clausula ANY (Ejemplo)
Mostrar los empleados con cargos distinto a IT_PROG, donde su
salario sea menor a cualquiera de los salarios de los empleados con
cargo IT_PROG.