Tema 4

Descargar como pdf o txt
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

También podría gustarte