Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Práctica Dirigida Nº 08
CONSULTAS AVANZADAS
Es la extracción de datos de 2 o más tablas, las cuales se unen mediante diferentes tipos de
combinaciones.
Tipos de combinaciones
a) Combinaciones internas INNER JOIN
Las combinaciones internas usan un operador de comparación para hacer coincidir las
filas de dos tablas según los valores de las columnas comunes de cada tabla.
b) Combinaciones externas OUTER JOIN
Combinaciones externa izquierda LEFT OUTER JOIN
Incluye todas las tablas de la tabla de la izquierda especificada en la cláusula LEFT
OUTER JOIN, y no sólo aquellas en las que coincidan las columnas combinadas.
Combinaciones externa derecha RIGHT OUTER JOIN
Es el inverso de una combinación izquierda. Se devuelven todas las filas de la tabla
de la derecha. Cada vez que una fila de l atabla de la derecha no tenga
correspondencia en la tabla de la izquierda, se devuelven valores NULL para la
tabla de la izquierda.
Combinaciones externa completa FULL OUTER JOIN
Una combinación externa completa devuelve todas las filas de las tablas de la
izquierda y la derecha. Cada vez que una fila no tenga coincidencias en la otra tabla,
las columnas de la lista de selección de la otra tabla contendrán valores NULL.
Cuando haya una coincidencia entre las tablas, la fila completa del conjunto de
resultados contendrá los valores de datos de las tablas base.
Ejercicios
1. Listar los nombres de los proveedores y los productos que estos suministran
ordenados por el nombre del proveedor.
SELECT pv.nombrecompañía,p.nombreproducto
FROM proveedores AS pv INNER JOIN productos AS P
ON pv.idproveedor=p.idproveedor
ORDER BY pv.nombrecompañía
SELECT p.idproducto,p.nombreproducto,c.nombrecategoría
FROM categorías AS c INNER JOIN productos AS p
ON c.idcategoría=p.idcategoría
SELECT p.idpedido,p.fechapedido,c.*
FROM pedidos AS p INNER JOIN clientes AS c
ON p.idcliente=c.idcliente
SELECT p.idproducto,p.nombreproducto,c.nombrecategoría,pv.nombrecompañía
FROM proveedores AS pv INNER JOIN productos AS p
ON pv.idproveedor=p.idproveedor
INNER JOIN categorías AS c
ON c.idcategoría=p.idcategoría
WHERE pv.idproveedor=1
SELECT c.idcliente,c.nombrecompañía,p.idpedido,p.fechapedido
FROM clientes AS c LEFT OUTER JOIN pedidos as P
ON p.idcliente=c.idcliente
ORDER BY p.idcliente
SELECT c.idcliente,c.nombrecompañía,p.idpedido,p.fechapedido
FROM clientes AS c LEFT OUTER JOIN pedidos AS p
ON c.idcliente=p.idcliente
WHERE p.idpedido IS NULL
Listar registros
SELECT p.idpedido,ce.nombrecompañía
FROM pedidos AS p RIGHT OUTER JOIN [Compañías de Envíos] AS ce
ON p.formaenvío=ce.idcompañíaenvíos
ORDER BY 2
SELECT c.idcliente,c.nombrecompañía,p.idpedido
FROM clientes AS c FULL OUTER JOIN pedidos AS p
ON c.idcliente=p.idcliente
ORDER BY 3
SELECT c.idcliente,c.nombre,f.idfactura
FROM clientesb AS c INNER JOIN facturas AS f
ON c.idcliente=f.idcliente
ORDER BY 1
SELECT c.idcliente,c.nombre,f.idfactura
FROM clientesb AS c LEFT OUTER JOIN facturas AS f
ON c.idcliente=f.idcliente
ORDER BY 1
SELECT c.idcliente,c.nombre,f.idfactura
FROM clientesb AS c RIGHT OUTER JOIN facturas AS f
ON c.idcliente=f.idcliente
ORDER BY 1
SELECT c.idcliente,c.nombre,f.idfactura
FROM clientesb AS c FULL OUTER JOIN facturas AS f
ON c.idcliente=f.idcliente
ORDER BY 1
SELECT c.idcliente,c.nombre,f.idfactura
FROM clientesb AS c CROSS JOIN facturas AS f
ORDER BY 1
Nota: esto incluye todas las filas de la tabla ClienteB (5 filas) y cada fila se combina con
todas las filas de la tabla de la derecha (7 filas)