La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

DML Transact SQL Sesión V Consultando múltiples tablas.

Presentaciones similares


Presentación del tema: "DML Transact SQL Sesión V Consultando múltiples tablas."— Transcripción de la presentación:

1 DML Transact SQL Sesión V Consultando múltiples tablas

2 Introducción En la sesión anterior el participante utilizó los productos cartesianos como método de recuperación de información de varias tablas, ahora se aplicará el uso de combinaciones como otro elemento para la obtención de datos a partir de varias tablas, por lo que se analizarán diversos tipos de combinaciones para tal tarea.

3 Combinación de tablas Las combinaciones permiten recuperar datos de dos tablas o más según las relaciones lógicas entre ellas. Las combinaciones indican cómo debería utilizar los datos de una tabla para seleccionar las filas de otra tabla.

4 Combinación de tablas Una condición de combinación define la forma en la que dos tablas se relacionan en una consulta al:  Especificar la columna de cada tabla que debe usarse para la combinación.  Especificar un operador lógico (=, <>, etc.) para usarlo en los valores de comparación de las columnas

5 Combinación de tablas Las combinaciones se pueden especificar en las cláusulas FROM o WHERE. Las condiciones de combinación se combinan con las condiciones de búsqueda de WHERE y HAVING para controlar cuáles son las filas seleccionadas de las tablas base a las que se hace referencia en la cláusula FROM.

6 Combinación de tablas Especificar las condiciones de la combinación en la cláusula FROM ayuda a separarlas de cualquier otra condición de búsqueda que se pueda especificar en una cláusula WHERE, y es el método recomendado para especificar combinaciones.

7 Combinación de tablas FROM first_table join_type second_table [ON (join_condition)]  join_type especifica qué clase de combinación se realiza: una combinación interna, externa o cruzada.  join_condition define el predicado que se va a evaluar por cada par de filas combinadas. Un ejemplo de la especificación de una combinación de la cláusula FROM

8 Combinación de tablas SELECT ProductID, Suppliers.SupplierID, CompanyName FROM Suppliers JOIN Products ON (Suppliers.SupplierID = Products.SupplierID) WHERE UnitPrice > $10 AND CompanyName LIKE N'F%'

9 Combinación de tablas Cuando en una consulta simple se hace referencia a múltiples tablas, ninguna de las referencias a las columnas debe ser ambigua. En el ejemplo anterior, ambas tablas, Products y Suppliers, tienen una columna llamada SupplierID.

10 Combinación de tablas Cuando el nombre de una columna no está duplicado en varias de las tablas usadas en la consulta, las referencias al mismo no tienen que calificarse con el nombre de la tabla.

11 Combinación de tablas SELECT P.ProductID, S.SupplierID, S.CompanyName FROM Suppliers AS S JOIN Products AS P ON (S.SupplierID = P.SupplierID) WHERE P.UnitPrice > $10 AND S.CompanyName LIKE 'F%'

12 Combinación de tablas SELECT P.ProductID, S.SupplierID, S.CompanyName FROM Suppliers AS S, Products AS P WHERE S.SupplierID = P.SupplierID AND P.UnitPrice > $10 AND S.CompanyName LIKE 'F%'

13 Combinación de tablas Combinación Interna Una combinación interna es aquélla en la que los valores de las columnas que se están combinando se comparan mediante un operador de comparación.

14 Combinación de tablas Esta consulta de Transact-SQL es un ejemplo de una combinación interna: USE pubs SELECT * FROM authors a INNER JOIN publishers p ON a.city = p.city ORDER BY a.au_lname DESC

15 Combinación de tablas Combinaciones con operadores distintos de igual SELECT p.pub_name, p.state, a.au_lname, a.au_fname, a.state FROM publishers p INNER JOIN authors a ON a.state > p.state WHERE p.pub_name = 'New Moon Books' ORDER BY au_lname ASC, au_fname ASC

16 Combinación de tablas Combinaciones con el operador no igual SELECT DISTINCT t1.type, t1.price FROM titles t1 INNER JOIN titles t2 ON t1.type = t2.type AND t1.price <> t2.price WHERE t1.price < $15 AND t2.price < $15

17 Combinación de tablas Combinaciones Externas Las combinaciones externas devuelven todas las filas de una de las tablas o vistas mencionadas en la cláusula FROM, como mínimo, siempre que tales filas cumplan con alguna de las condiciones de búsqueda de WHERE o HAVING.

18 Combinación de tablas Combinaciones externas especificadas en una cláusula FROM:  LEFT OUTER JOIN o LEFT JOIN  RIGHT OUTER JOIN o RIGHT JOIN  FULL OUTER JOIN o FULL JOIN

19 Combinación de tablas Utilizar combinaciones exteriores izquierdas SELECT a.au_fname, a.au_lname, p.pub_name FROM authors a LEFT OUTER JOIN publishers p ON a.city = p.city ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC

20 Combinación de tablas Utilizar combinaciones exteriores derechas SELECT a.au_fname, a.au_lname, p.pub_name FROM authors AS a RIGHT OUTER JOIN publishers AS p ON a.city = p.city ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC

21 Combinación de tablas Utilizar combinaciones externas completas SELECT a.au_fname, a.au_lname, p.pub_name FROM authors a FULL OUTER JOIN publishers p ON a.city = p.city ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC

22 Combinación de tablas Combinaciones cruzadas Una combinación cruzada que no tenga una cláusula WHERE produce el producto cartesiano de las tablas involucradas en la combinación. El tamaño del conjunto de resultados de un producto cartesiano es igual al número de filas de la primera tabla multiplicado por el número de filas de la segunda tabla

23 Combinación de tablas El conjunto de resultados contiene 184 filas (authors tiene 23 filas y publishers tiene 8; 23 multiplicado por 8 es igual a 184). SELECT au_fname, au_lname, pub_name FROM authors CROSS JOIN publishers ORDER BY au_lname DESC

24 Combinación de tablas Sin embargo, si se agrega una cláusula WHERE, la combinación cruzada se comporta como una combinación interna. Por ejemplo, las siguientes consultas Transact-SQL producen el mismo conjunto de resultados

25 Combinación de tablas USE pubs SELECT au_fname, au_lname, pub_name FROM authors CROSS JOIN publishers WHERE authors.city = publishers.city ORDER BY au_lname DESC

26 Combinación de tablas USE pubs SELECT au_fname, au_lname, pub_name FROM authors INNER JOIN publishers ON authors.city = publishers.city ORDER BY au_lname DESC

27


Descargar ppt "DML Transact SQL Sesión V Consultando múltiples tablas."

Presentaciones similares


Anuncios Google