Este módulo cubre cómo escribir consultas que combinan datos de múltiples tablas en SQL Server mediante el uso de cláusulas JOIN. Se explican conceptos como productos cartesianos, diferentes tipos de JOIN como INNER JOIN y OUTER JOIN, y variaciones en la sintaxis JOIN entre ANSI SQL-89 y SQL-92.
0 calificaciones0% encontró este documento útil (0 votos)
17 vistas16 páginas
Este módulo cubre cómo escribir consultas que combinan datos de múltiples tablas en SQL Server mediante el uso de cláusulas JOIN. Se explican conceptos como productos cartesianos, diferentes tipos de JOIN como INNER JOIN y OUTER JOIN, y variaciones en la sintaxis JOIN entre ANSI SQL-89 y SQL-92.
Este módulo cubre cómo escribir consultas que combinan datos de múltiples tablas en SQL Server mediante el uso de cláusulas JOIN. Se explican conceptos como productos cartesianos, diferentes tipos de JOIN como INNER JOIN y OUTER JOIN, y variaciones en la sintaxis JOIN entre ANSI SQL-89 y SQL-92.
Este módulo cubre cómo escribir consultas que combinan datos de múltiples tablas en SQL Server mediante el uso de cláusulas JOIN. Se explican conceptos como productos cartesianos, diferentes tipos de JOIN como INNER JOIN y OUTER JOIN, y variaciones en la sintaxis JOIN entre ANSI SQL-89 y SQL-92.
Descargue como PDF, TXT o lea en línea desde Scribd
Descargar como pdf o txt
Está en la página 1de 16
Módulo 4
Consulta de varias tablas
Contenido: Módulo Descripción general 4-1 Lección 1: Entendimiento une 4-2 Lección 2: Consulta con uniones interiores 4-7 Lección 3: Consulta con combinaciones externas 4.11 Lección 4: Consultar con la Cruz se une y Auto se une a 04.14 Laboratorio: Consulta de varias tablas 4-18 Revisión del módulo y comida para llevar 4-23 Módulo de Información general En los ambientes del mundo real, es probable que los datos que necesita para consultar es almacenada en varias ubicaciones. Anteriormente, aprendiste cómo escribir consultas básicas de una sola mesa. En este módulo, usted aprenderá cómo escribir consultas que combinan datos de múltiples fuentes en Microsoft SQL Server. Va a hacerlo por escrito consultas que contiene une, que le permite recuperar los datos de dos (o más) tablas basadas en datos relaciones entre las tablas. Objetivos Después de completar este módulo, el alumno será capaz de: Describir cómo mesas múltiples puede ser consultada en una sentencia SELECT utilizando une. Escribir consultas que utilizan combinaciones internas. Escribir consultas que utilizan combinaciones externas. Escribir consultas que utilizan auto se une y la cruz une.
MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO
4-2 Consulta de Tablas Múltiples Lección 1 Entendimiento une En esta lección, aprenderá los fundamentos de combinaciones en SQL Server. Usted descubrirá cómo el DE cláusula en un comunicado de T-SQL SELECT crea tablas virtuales intermedios que serán consumidos por las fases posteriores de la consulta. Usted aprenderá cómo una combinación ilimitada de filas de dos tablas se obtiene un producto cartesiano. Este módulo también cubre el común unen tipos de consultas multi-mesa T-SQL. Objetivos de la lección Después de completar esta lección, el alumno será capaz de: Describir la relación entre la cláusula FROM y las tablas virtuales en una sentencia SELECT. Describir un producto cartesiano y cómo puede ser creado por una combinación. Describir el común unen tipos de consultas T-SQL. Comprender la diferencia entre ANSI SQL-89 y SQL-92 se unen a la sintaxis. La cláusula FROM y tablas virtuales Más temprano, usted aprendió sobre el orden lógico de operaciones realizadas cuando los procesos de SQL Server una consulta. Usted recordará que la cláusula FROM de una Instrucción SELECT es la primera fase para ser procesada. Esta cláusula determina qué tabla o tablas serán la fuente de filas para la consulta. Como podrás ver en este módulo, esto será verdad si usted está consultando una sola tabla o que reúne varias tablas como la fuente de su consulta. Para obtener información sobre las capacidades adicionales de la Cláusula FROM, será útil pensar en la cláusula funcionan como crear y llenar una tabla virtual. Esta tabla virtual celebrará la salida del DE cláusula y ser utilizado posteriormente por otras fases de la instrucción SELECT, como la cláusula WHERE. Como agrega funcionalidad adicional, como operadores de combinación, a una cláusula FROM, será útil pensar en la propósito de la cláusula a partir de elementos como sea para agregar filas a, o eliminar las filas de la tabla virtual. Nota: La tabla virtual creado por una cláusula FROM es sólo una entidad lógica. En SQL Server, no se crea tabla física, ya sea permanente o temporal, para sostener los resultados de la cláusula FROM, ya que se pasa a la cláusula WHERE o otras fases posteriores. La sintaxis de la instrucción SELECT que haya utilizado para las consultas anteriores en este curso ha aparecido como de la siguiente manera: SELECT Sintaxis SELECT ... FROM <table> AS <alias>; Usted aprendió antes que la cláusula FROM se procesa en primer lugar, y como consecuencia, los alias de tabla se crean no se puede hacer referencia en la cláusula SELECT. Usted verá numerosos ejemplos de alias de tabla en este MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO Consulta Microsoft® SQL Server® 3.4 módulo. Si bien son opcionales, excepto en el caso de auto unirse a las consultas, verá rápidamente cómo pueden ser una herramienta útil al escribir consultas. Comparar las dos consultas siguientes, que tienen la misma de salida, pero que difieren en el uso de alias. (Tenga en cuenta que los ejemplos se utiliza una cláusula JOIN, que será cubierto más adelante en este módulo). La primera consulta no utiliza los alias de tabla: Sin alias de tabla USO TSQL; IR SELECT Sales.Orders.orderid, Sales.Orders.orderdate, Sales.OrderDetails.productid, Sales.OrderDetails.unitprice, Sales.OrderDetails.qty DESDE Sales.Orders ÚNETE Sales.OrderDetails EN Sales.Orders.orderid = Sales.OrderDetails.orderid; El segundo ejemplo se recuperan los mismos datos pero utiliza alias de tabla: Con alias de tabla USO TSQL; IR SELECT o.orderid, o.orderdate, od.productid, dp.preciounidad, od.qty DESDE Sales.Orders como O ÚNETE Sales.OrderDetails AS desde SOBRE o.orderid = dp.idpedido; Como se puede ver, el uso de alias de tablas mejora la legibilidad de la consulta, sin afectar a la actuación. Se recomienda encarecidamente que utilice los alias de tabla en sus consultas multi-mesa. Nota: Una vez que una tabla se ha designado con un alias en la cláusula FROM, se trata de una mejor practicar usar el alias cuando se hace referencia a las columnas de esa tabla en otras cláusulas. Terminología de Ingreso: cartesiana Producto Al aprender acerca de cómo escribir consultas multi-mesa en T-SQL, es importante entender el concepto de productos cartesianos. En matemáticas, este es el producto de dos conjuntos. El producto de un juego de dos artículos y un conjunto de seis es un conjunto de 12 artículos - o 6 x 2. En bases de datos, un producto cartesiano es el resultado de uniendo cada fila de una tabla de entrada a todas las filas de otra mesa de entrada. El producto de una mesa con 10 filas y una tabla con 100 filas es un conjunto de resultados con 1.000 filas. Para la mayoría de las consultas de T-SQL, un producto cartesiano no es el resultado deseado. Típicamente, un cartesiano producto se produce cuando dos tablas de entrada se unen sin considerar ningún relaciones lógicas entre ellos. En ausencia de cualquier información acerca de las relaciones, la salida de voluntad procesador de consultas de SQL Server todas las combinaciones posibles de filas. Mientras que esto puede tener algunas aplicaciones prácticas, como la creación de una tabla de números o la generación de prueba datos, no es típicamente útil y puede tener efectos graves de rendimiento. Usted aprenderá una útil aplicación de cartesiana une más adelante en este módulo. MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO 4-4 Consulta de Tablas Múltiples Nota: En el siguiente tema, usted comparar dos métodos diferentes para especificar la sintaxis de una unión. Usted verá que un método que puede conducir hacia la escritura producto cartesiano accidental consultas. Información general sobre Únete Tipos Para rellenar la tabla virtual producida por la Cláusula FROM de una sentencia SELECT, SQL Server usos unirse a operadores. Estos añadir o eliminar filas de la mesa virtual, antes de que se entrega a subsiguientes fases lógicas del SELECT declaración: Una combinación cruzada operador (CROSS JOIN) añade todos las posibles combinaciones de las dos tablas de entrada ' filas a la tabla virtual. Cualquier filtrado de la filas sucederán en una cláusula WHERE. Para la mayoría fines consulta, este operador es ser evitado. una combinación interna del operador (INNER JOIN, o simplemente JOIN) primero crea un producto cartesiano y, a continuación, filtra la resultados utilizando el predicado se incluye en la cláusula ON, la eliminación de las filas de la tabla virtual que no satisfacen el predicado. La combinación interna es un tipo muy común de unirse para recuperar filas con atributos de ese partido a través de tablas, como la equiparación de los clientes a las órdenes de un custid común. Un operador de combinación externa (LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN) crea primero una Producto cartesiano, y al igual que una combinación interna, filtra los resultados para encontrar filas que coinciden en cada mesa. Sin embargo, todas las filas de una tabla se conservan, y ha añadido de nuevo a la mesa virtual después de la inicial se aplica filtro. NULL se colocan en los atributos donde se encuentran no hay valores coincidentes. Nota: A menos que de otro modo calificado con CROSS o exterior, la ÚNETE incumplimientos de operador a un Unir internamente. Elecciones de T-SQL Sintaxis A través de la historia de las versiones de SQL Server, el producto ha cambiado al mismo ritmo que las variaciones en las normas ANSI para el lenguaje SQL. Uno de los lugares más notables en estos cambios son visibles es en la sintaxis para el operador unirse en una Cláusula FROM. En ANSI SQL-89, sin SOBRE operador se definió. Las combinaciones estaban representados en una lista separada por comas de tablas, y cualquier filtrado, tales como para un interior se unen, se llevó a cabo en la cláusula WHERE. Esta sintaxis todavía con el apoyo de SQL Server, pero debido a la complejidad de representar los filtros para una combinación externa en la cláusula WHERE, así como cualquier otra de filtrado, no se recomienda el uso de este. Además, si una cláusula WHERE se omite accidentalmente, ANSI-89 SQL-estilo se une puede convertirse fácilmente Productos cartesianos y los problemas de rendimiento de la causa. MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO Consulta Microsoft® SQL Server® 4.5 Las consultas siguientes ilustran esta sintaxis y este problema potencial: Producto cartesiano USO TSQL; IR /* Esta es ANSI SQL-89 sintaxis de una combinación interna, con la filtración realizada en la cláusula WHERE. */ C.companyname SELECT, o.orderdate DESDE Sales.Customers como C, Sales.Orders como O DONDE c.custid = o.custid; .... (830 fila (s) affected) /* Esta es ANSI SQL-89 sintaxis de una combinación interna, omitiendo la cláusula WHERE y causando un cartesiano inadvertida unirse. */ C.companyname SELECT, o.orderdate DESDE Sales.Customers como C, Sales.Orders como O; ... (75.530 fila (s) affected) Con la llegada de la norma ANSI SQL-92, se añadió soporte para la cláusula ON. T-SQL también admite esta sintaxis. Las combinaciones se representa en la cláusula FROM usando la apropiada ÚNETE operador. La lógica relación entre las tablas, que se convierte en un predicado de filtro, se representa con la cláusula ON. El siguiente ejemplo se reafirma la consulta previa con la sintaxis más reciente: ÚNETE Cláusula C.companyname SELECT, o.orderdate DESDE Sales.Customers AS c ÚNETE Sales.Orders como O EN c.custid = o.custid; Nota: la sintaxis SQL-92 ANSI hace que sea más difícil crear accidental cartesiana une. Una vez que la palabra clave JOIN se ha añadido, se elevará un error de sintaxis si una cláusula ON no se encuentra. Demostración: Entendimiento une En esta demostración, verá cómo: Uso une. Pasos de demostración Uso une 1. Asegúrese de que las máquinas virtuales 20461C-MIA-CC y 20461C-MIA-SQL se ejecutan tanto, y luego iniciar sesión en 20461C-MIA-SQL como AdventureWorks \ Estudiante con la contraseña Pa $$ w0rd. 2. Ejecute D: \ Demofiles \ Mod04 \ Setup.cmd como administrador. 3. Inicie SQL Server Management Studio y conéctese a la instancia de motor de base de MIA- SQL utilizando La autenticación de Windows. 4. Abra la solución Demo.ssmssln en la carpeta D: \ Demofiles \ Mod04 \ demo. 5. Si el panel Explorador de soluciones no está visible, en el menú Ver, haga clic en el Explorador de soluciones. MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO 4-6 Consulta de Tablas Múltiples 6. Abra la 11 - archivo de script A.sql demostración. 7. Siga las instrucciones contenidas en los comentarios del archivo de comandos. 8. Mantenga abierta para la próxima manifestación SQL Server Management Studio.
MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO
Consulta Microsoft® SQL Server® 4.7 Lección 2 Consulta con une Interior En esta lección, aprenderá cómo escribir unirse a las consultas internas, el tipo más común de consulta multi-mesa un entorno empresarial. Al expresar una relación lógica entre las tablas, usted recuperar sólo aquellas filas con juego atributos presentes en ambos. Objetivos de la lección Después de completar esta lección, el alumno será capaz de: Describir combinaciones internas. Une Escribir consultas usando interior. Describir la sintaxis de una combinación interna. Une Entendimiento Interior Consultas T-SQL que utilizan combinaciones internas son las más tipos comunes para resolver muchos problemas de negocios, especialmente en la base de datos altamente normalizada ambientes. Para recuperar datos que han sido almacenada a través de múltiples mesas, a menudo necesitará para volver a montar él a través de consultas internas unirse. Como usted ha aprendido previamente, una combinación interna comienza su fase de procesamiento lógico como un cartesiano producto, que se filtra a continuación para eliminar cualquier filas que no concuerdan con el predicado. En la sintaxis SQL-89, que es predicado en el DONDE cláusula. En la sintaxis SQL-92, que el predicado está dentro la cláusula FROM en la cláusula ON: SQL-89 y SQL-92 Únete Sintaxis comparación Sintaxis --ansi SQL-89 C.companyname SELECT, o.orderdate DESDE Sales.Customers como C, Sales.Orders como O DONDE c.custid = o.custid; Sintaxis --ansi SQL-92 C.companyname SELECT, o.orderdate DESDE Sales.Customers AS c ÚNETE Sales.Orders como O EN c.custid = o.custid; Desde el punto de vista de rendimiento, usted encontrará que el optimizador de consultas de SQL Server no está a favor de un sintaxis sobre el otro. Sin embargo, a medida que aprende sobre otros tipos de uniones, se une todo exterior, lo harás probable decide que prefiere utilizar la sintaxis SQL-92 y el filtro en la cláusula ON. Mantener el filtro de combinación lógicas en la cláusula ON y salen otros datos de filtrado en la cláusula WHERE, hará que sus consultas más fácil leer y prueba.
MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO
4-8 Consulta de Tablas Múltiples El uso de la sintaxis ANSI SQL-92, vamos a examinar los pasos por los que SQL Server lógicamente procesar este consulta. Los números de línea se agregan para mayor claridad y no están sometidos a el motor de consulta para su ejecución: ANSI-92 Únete 1) c.companyname SELECT, o.orderdate 2) DE Sales.Customers como C 3) ¡ÚNETE Sales.Orders como O 4) EN c.custid = o.custid; Como ha aprendido anteriormente, la cláusula FROM serán procesados antes de la cláusula SELECT. Por lo tanto, vamos a realizar un seguimiento el procesamiento, a partir de la línea 2: La cláusula FROM designa la tabla Sales.Customers como una de las mesas de entrada, dándole el alias de 'do'. El operador JOIN en la línea 3 refleja el uso de una combinación interna (el tipo predeterminado en T-SQL) y designa Sales.Orders como la otra mesa de entrada, que tiene un alias de 'o'. SQL Server realizará una lógica cartesiana unirse en estas tablas y pasar los resultados a la siguiente fase en la tabla virtual. (Tenga en cuenta que la transformación física de la consulta en realidad no puede realizar la Operación producto cartesiano, en función de las decisiones del optimizador). El uso de la cláusula ON, SQL Server filtrar la tabla virtual, conservando sólo las filas donde un custid valor de la tabla 'c' (Sales.Customers ha sido reemplazado por el alias) coincide con un custid de la 'p' mesa (Sales.Orders ha sido reemplazado por un alias). Las filas restantes se dejan en la mesa virtual y entregados fuera a la siguiente fase en el SELECT declaración. En este ejemplo, la tabla siguiente virtual está procesada por la cláusula SELECT, y sólo dos columnas se devuelven a la aplicación cliente. • El resultado? Una lista de los clientes que han realizado pedidos. Cualquier cliente que nunca han puesto un Para haber sido filtrada por la cláusula ON, al igual que todos los pedidos que pasan a tener un ID de cliente que no corresponde a una entrada en la lista de clientes. Inner Join Sintaxis Al escribir consultas utilizando combinaciones internas, considere las siguientes pautas: Como se ha visto, se prefieren los alias de tabla no sólo para la lista de selección, sino también para expresando la cláusula ON. Las uniones interiores se puede realizar en una sola búsqueda de atributo, tal como un idpedido, o en múltiples atributos a juego, tales como la combinación de IdPedido y ProductID. Une que coinciden múltiples atributos se denominan compuesta une. El orden en que las tablas se enumeran y se unieron en la cláusula FROM no importa a SQL Server optimizador. (Esto no va a ser el caso de OUTER JOIN consultas en el siguiente tema). Conceptualmente, se une la voluntad se evalúan de izquierda a derecha. Usar la palabra clave JOIN una vez por cada dos tablas en la lista. Para una consulta de dos mesas, especifique uno unirse. Para una consulta de tres tabla, utilizará ÚNETE dos veces - una vez entre las dos primeras mesas, y una vez de nuevo entre la salida de las dos primera y la tercera tabla. MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO Consulta Microsoft® SQL Server® 4.9 Interior Únete Ejemplos Los siguientes son algunos ejemplos de combinaciones internas: Esta consulta realiza una unión en un solo juego atribuir, relacionando la categoryid del Mesa Production.Categories al categoryid de la mesa Production.Products: Interior Ejemplo de Ingreso C.categoryid SELECT, categoryname, p.productid, p.productname DESDE Production.Categories como C ÚNETE Production.Products como P EN c.categoryid = p.categoryid; Esta consulta realiza una composición se unen en dos atributos a juego, en relación ciudad y país de atributos Sales.Customers a hr.employees. Tenga en cuenta el uso del operador DISTINCT para filtrar duplicado ocurrencias de ciudad, país: Interior Ejemplo de Ingreso SELECT DISTINCT e.city, e.country DESDE Sales.Customers como C ÚNETE hr.employees como E EN c.city = e.city Y c.country = e.country; Nota: El código de demostración para esta lección también utiliza el operador DISTINCT para filtrar duplicados. El siguiente ejemplo muestra cómo una combinación interna puede ampliarse para incluir más de dos tablas. Tenga en cuenta que la tabla Sales.OrderDetails no se une a la mesa Sales.Orders, pero a la salida de la unión entre Sales.Customers y Sales.Orders. Cada instancia de JOIN ... EN realiza su propia población y el filtrado de la tabla de salida virtual. Es hasta el optimizador de consultas de SQL Server para decidir en qué orden las uniones y se realiza la filtración. El siguiente ejemplo muestra cómo una combinación interna puede ampliarse para incluir más de dos tablas. Interior Ejemplo de Ingreso C.custid SELECT, c.companyname, o.orderid, o.orderdate, od.productid, od.qty DESDE Sales.Customers como C ÚNETE Sales.Orders como O EN c.custid = o.custid ÚNETE Sales.OrderDetails AS desde EN o.orderid = dp.idpedido; Demostración: Consulta con une Interior En esta demostración, verá cómo: uso interno se une. Pasos de demostración Se une a uso interno MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO 4-10 Consulta de Tablas Múltiples 1. Asegúrese de que ha completado la demostración previa en este módulo. Alternativamente, inicie el Máquinas virtuales 20461C-MIA-CC y 20461C-MIA-SQL, ingrese a 20461C-MIA-SQL como AdventureWorks \ Estudiante con la contraseña Pa $$ w0rd, y correr D: \ Demofiles \ Mod04 \ Setup.cmd como administrador. 2. Si SQL Server Management Studio no está abierto, iniciarlo y conectarse a la base de datos MIA-SQL instancia del motor mediante la autenticación de Windows y, a continuación, abra la solución Demo.ssmssln en el Carpeta D: \ Demofiles \ Mod04 \ demo. 3. En el Explorador de soluciones, abra el 21 - archivo de script B.sql demostración. 4. Siga las instrucciones contenidas en los comentarios del archivo de comandos. 5. Mantenga abierta para la próxima manifestación SQL Server Management Studio.
MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO
Consulta Microsoft® SQL Server® 4-11 Lección 3 Consulta con combinaciones externas En esta lección, aprenderá cómo escribir consultas que utilizan combinaciones externas. Aunque no es tan común como combinaciones internas, el uso de combinaciones externas en una consulta multi-mesa puede proporcionar una visión alternativa de los datos empresariales. Al igual que con interno se une, se expresar una relación lógica entre las mesas. Sin embargo, se va a recuperar no sólo filas con atributos a juego, pero todas las filas presentes en una de las mesas, aunque no hay un partido en la otra tabla. Objetivos de la lección Después de completar esta lección, el alumno será capaz de: Comprender el propósito y la función de combinaciones externas. Ser capaz de escribir consultas que utilizan combinaciones externas. Ser capaz de combinar una combinación externa operador en una cláusula FROM con una prueba de aceptación de valores NULL en una DONDE cláusula para revelar filas no coincidentes. Entendimiento combinaciones externas En la lección anterior, usted aprendió cómo utilizar interno se une para que coincida con las filas en tablas separadas. Como viste, SQL Server construye los resultados de un interno consulta de combinación mediante la filtración de filas que no cumplieron las condiciones expresadas en la cláusula ON predicado. El resultado es que sólo las filas que emparejado de ambas tablas se muestran. Con un combinación externa, puede optar por mostrar todas las filas de una mesa, junto con los que coinciden desde la segunda tabla. Veamos un ejemplo, a continuación, explorar el proceso. En primer lugar, vamos a examinar la siguiente consulta, escribir como una combinación interna: Unir internamente USO AdventureWorks; IR SELECT c.CustomerID, soh.SalesOrderID DESDE Sales.Customer como C ÚNETE Sales.SalesOrderHeader AS soh EN c.CustomerID = soh.CustomerID - (31.465 fila (s) affected) Tenga en cuenta que este ejemplo utiliza la base de datos AdventureWorks2008R2 para estas muestras. Cuando se escribe como una join interno, la consulta devuelve 31,465 filas. Estas filas representan un partido entre los clientes y pedidos. Sólo aquellos CustomerIDs que se encuentran en ambas tablas aparecerán en los resultados. Sólo los clientes que han depositado serán devueltos órdenes.
MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO
4-12 Consulta de Tablas Múltiples Ahora, vamos a examinar la siguiente consulta, escrita como una combinación externa izquierda: Externa izquierda USO AdventureWorks; IR SELECT c.CustomerID, soh.SalesOrderID DESDE Sales.Customer AS c LEFT OUTER JOIN Sales.SalesOrderHeader AS soh EN c.CustomerID = soh.CustomerID - (32.166 fila (s) affected) Este ejemplo utiliza un LEFT OUTER JOIN operador, que como usted aprenderá, dirige el procesador de consultas al preservar todas las filas de la tabla de la izquierda (Sales.Customer) y muestra los valores de SalesOrderID filas coincidentes en Sales.SalesOrderHeader. Sin embargo, hay más filas devueltas en este ejemplo. Todas clientes son devueltos, si tienen o no han hecho un pedido. Como se verá en esta lección, una combinación externa unirse mostrará todas las filas de un lado de la unión o de otra, o no coinciden. ¿Qué hace una combinación externa pantalla consulta en columnas donde no había partido? En este ejemplo, hay sin casar órdenes para 701 clientes. En el lugar de la columna de SalesOrderID, es la salida de SQL Server NULL donde los valores están por lo demás desaparecidos. Combinación externa Sintaxis Al escribir consultas utilizando combinaciones externas, considere las siguientes pautas: Como se ha visto, se prefieren los alias de tabla no sólo para la lista de selección, sino también para expresando la cláusula ON. combinaciones externas se expresan mediante las palabras clave IZQUIERDA, DERECHA, o EXTERIOR anterior COMPLETO unirse. El propósito de la palabra clave es indicar qué tabla (en qué lado de la palabra clave ÚNETE) debe ser preservado y tienen toda su filas muestran, partido o no partido. Como con uniones interiores, combinaciones externas se puede realizar en un solo atributo de adaptación, tal como un idpedido, o en varios atributos que coinciden, como IdPedido y ProductID. A diferencia de uniones interiores, el orden en que las tablas se enumeran y se unió en la materia cláusula FROM hace, como que determinará si usted elige IZQUIERDA o DERECHA para su unión. Multi-mesa une es más complejo cuando una combinación externa está presente. La presencia de valores NULL en el resultados de una combinación externa puede causar problemas si se unen entonces los resultados intermedios, a través de una combinación interna, a un tercio tabla. Las filas con valores NULL pueden ser filtrados por el segundo de unirse predicado. Para mostrar sólo las filas donde existe ninguna coincidencia, añadir una prueba para NULL en una cláusula WHERE a raíz de una OUTER JOIN predicado. MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO Consulta Microsoft® SQL Server® 4-13 Combinación externa Ejemplos Los siguientes son algunos ejemplos de combinaciones externas: Esta consulta muestra todos los clientes y proporciona información acerca de cada uno de sus pedidos si existen: Combinación externa Ejemplo USO TSQL; IR C.custid SELECT, c.companyname, o.orderid, o.orderdate DESDE Sales.Customers como C LEFT OUTER JOIN Sales.Orders como O EN c.custid = o.custid; Esta consulta muestra sólo los clientes que nunca han hecho un pedido: Combinación externa Ejemplo C.custid SELECT, c.companyname, o.orderid, o.orderdate DESDE Sales.Customers como C LEFT OUTER JOIN Sales.Orders como O EN c.custid = o.custid DONDE o.orderid IS NULL; Demostración: Consulta con combinaciones externas En esta demostración, verá cómo: Uso combinaciones externas. Pasos de demostración Usar combinaciones externas 1. Asegúrese de que ha completado la demostración previa en este módulo. Alternativamente, inicie el Máquinas virtuales 20461C-MIA-CC y 20461C-MIA-SQL, ingrese a 20461C-MIA-SQL como AdventureWorks \ Estudiante con la contraseña Pa $$ w0rd, y correr D: \ Demofiles \ Mod04 \ Setup.cmd como administrador. 2. Si SQL Server Management Studio no está abierto, iniciarlo y conectarse a la base de datos MIA-SQL instancia del motor mediante la autenticación de Windows y, a continuación, abra la solución Demo.ssmssln en el Carpeta D: \ Demofiles \ Mod04 \ demo. 3. En el Explorador de soluciones, abra el 31 - archivo de script C.sql demostración. 4. Siga las instrucciones contenidas en los comentarios del archivo de comandos. 5. Mantenga abierta para la próxima manifestación SQL Server Management Studio.
MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO
4-14 Consulta de Tablas Múltiples Lección 4 Consulta con la Cruz se une y Auto se une En esta lección, usted aprenderá acerca de otros tipos de uniones, que son útiles en algunos más especializados escenarios. Objetivos de la lección Después de completar esta lección, el alumno será capaz de: Describir un uso para una combinación cruzada. Escribir consultas que utilizan cruz une. Describir un uso para un auto unirse. Escribir consultas que utilizan auto une. La comprensión de la Cruz se une a Cruz se unen consultas crean un producto cartesiano que, como usted ha aprendido en este módulo hasta ahora, se han de ser evitado. Aunque usted ha visto un medio para crear uno con ANSI SQL-89 de sintaxis, no lo ha hecho visto cómo o por qué hacerlo con ANSI SQL-92. Esta tema volverá a examinar cruz une y productos cartesianos. Para crear explícitamente un producto cartesiano, lo haría utilizar el CROSS JOIN operador. Esto creará un conjunto de resultados con todos los posibles combinaciones de filas de entrada: Cruz Únete SELECT ... DESDE tabla1 AS CROSS JOIN tabla2 t1 t2 AS; Si bien esto no es típicamente una salida deseada, hay algunas aplicaciones prácticas para escribir un explícito cruz se unen: Creación de una tabla de números, con una fila para cada valor posible en un rango. Generación de grandes volúmenes de datos para las pruebas. Cuando la cruz se unió a sí mismo, una mesa con tan sólo 100 filas pueden generar fácilmente 10.000 filas de salida con muy poco trabajo de su parte. MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO Consulta Microsoft® SQL Server® 04.15 Cruz Únete Sintaxis Al escribir consultas con CROSS JOIN, considere el seguimiento: No hay coincidencia de filas realizado, y por lo tanto, no se requiere ninguna cláusula ON. Para utilizar ANSI SQL-92 de sintaxis, separar la entrada nombres de tabla con la Cruz ÚNETE operador. Cruz Únete Ejemplos El siguiente es un ejemplo del uso de CROSS JOIN para crear todas las combinaciones de dos conjuntos de entrada: Utilizando la muestra TSQL, esto tomará las nueve empleado nombres y apellidos para generar 81 combinaciones: Cruz Únete Ejemplo E1.firstname SELECT, e2.lastname DESDE hr.employees e1 CROSS JOIN hr.employees e2; Comprensión de uno mismo se une a Para este punto, las uniones que han aprendido sobre han participado varias tablas separadas. Puede ser escenarios en los que usted necesita para comparar y recuperar los datos almacenados en la misma mesa. por ejemplo, en una aplicación clásica de los recursos humanos, una tabla Empleados podría incluir información sobre el supervisor de cada empleado en el propia fila del empleado. Cada supervisor también está en la lista como empleado. Para recuperar el empleado la información y hacerla coincidir con el supervisor relacionado, puede utilizar la tabla dos veces en la consulta, uniéndose a sí misma para los fines de la consulta. Hay otros escenarios en los que usted querrá comparar las filas dentro de una tabla con los otros. Como tu han visto, es bastante fácil de comparar las columnas dentro de la misma fila usando T-SQL, pero cómo comparar los valores de las diferentes filas (como una fila que almacena un tiempo de arranque con otra fila en la misma mesa que almacena un tiempo de parada correspondiente) es menos obvia. Auto joins son una técnica útil para este tipo de consultas.
MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO
4-16 Consulta de Tablas Múltiples Con el fin de realizar tareas como ésta, tendrá que tener en cuenta las siguientes pautas: Crear dos instancias de la misma tabla en la cláusula FROM, y unirse a ellos cuando sea necesario, el uso de interior o combinaciones externas. Uso alias de tabla para crear dos alias diferentes para la misma mesa. Al menos uno de ellos debe tener un alias. Utilice la cláusula ON para proporcionar un filtro utilizando columnas separadas de la misma tabla. En el siguiente ejemplo, que va a examinar de cerca en el tema siguiente, ilustra estas pautas: Esta consulta recupera los empleados y su información de gerente coincidente de la tabla Empleados se unió a sí mismo: Auto Únete Ejemplo E.empid SELECT, e.lastname AS empName, e.title, e.mgrid, m.lastname AS mgrname DESDE hr.employees como E ÚNETE hr.employees como M EN e.mgrid = m.empid; Esto produce resultados como los siguientes: empName empid título mGrid mgrname ----- ------------ --------------------- ----- ------- -------- 2 Funk Vice Presidente de Ventas 1 Davis 3 Lew Sales Manager 2 Funk 4 Peled representante de ventas de 3 Lew 5 Buck Sales Manager 2 Funk 6 Suurs representante de ventas de 5 Buck 7 Rey representante de ventas de 5 Buck 8 Cameron representante de ventas de 3 Lew 9 Dolgopyatova representante de ventas de 5 Buck Auto Únete Ejemplos Los siguientes son algunos ejemplos de la auto une: Esta consulta devuelve todos los empleados, junto con el nombre del gerente de cada empleado, cuando un existe gerente (unidas interior). Tenga en cuenta que un administrador parece que no está también aparece un empleado: Auto Únete Ejemplo E.empid SELECT, e.lastname AS empName, e.title, e.mgrid, m.lastname AS mgrname DESDE hr.employees como E ÚNETE hr.employees como M EN e.mgrid = m.empid;
MCT USAR SOLAMENTE. ESTUDIANTE USO PROHIBIDO
Consulta Microsoft® SQL Server® 4-17 Esta consulta devuelve todos los empleados con el nombre de cada gerente (combinación externa). Esto restaura los desaparecidos empleado, que resulta ser un CEO con ningún gerente: Auto Únete Ejemplo E.empid SELECT, e.lastname AS empName, e.title, e.mgrid, m.lastname AS mgrname DESDE hr.employees como E LEFT OUTER JOIN hr.employees como M EN e.mgrid = m.empid; Demostración: Consulta con la Cruz se une y Auto se une En esta demostración, verá cómo: Uso auto se une y la cruz une. Pasos de demostración Use Auto se une y se une a la Cruz 1. Asegúrese de que ha completado la demostración previa en este módulo. Alternativamente, inicie el Máquinas virtuales 20461C-MIA-CC y 20461C-MIA-SQL, ingrese a 20461C-MIA-SQL como AdventureWorks \ Estudiante con la contraseña Pa $$ w0rd, y correr D: \ Demofiles \ Mod04 \ Setup.cmd como administrador. 2. Si SQL Server Management Studio no está abierto, iniciarlo y conectarse a la base de datos MIA-SQL instancia del motor mediante la autenticación de Windows y, a continuación, abra la solución Demo.ssmssln en el Carpeta D: \ Demofiles \ Mod04 \ demo. 3. En el Explorador de soluciones, abra el 41 - archivo de script D.sql demostración. 4. Siga las instrucciones contenidas en los comentarios del archivo de comandos. 5. Cierre SQL Server Management Studio sin guardar los archivos