0% encontró este documento útil (0 votos)
69 vistas22 páginas

Consultas Multitabla en SQL Server

Este documento describe diferentes tipos de consultas multitabla en SQL Server, incluyendo operaciones de álgebra relacional como unión, diferencia, intersección, producto cartesiano, composición interna y composición externa. Explica cómo estas consultas permiten obtener datos de múltiples tablas para combinar filas y columnas de diferentes maneras dependiendo del tipo de operación utilizada.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
69 vistas22 páginas

Consultas Multitabla en SQL Server

Este documento describe diferentes tipos de consultas multitabla en SQL Server, incluyendo operaciones de álgebra relacional como unión, diferencia, intersección, producto cartesiano, composición interna y composición externa. Explica cómo estas consultas permiten obtener datos de múltiples tablas para combinar filas y columnas de diferentes maneras dependiendo del tipo de operación utilizada.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

SQL Server

Consultas Multitabla
HASTA EL MOMENTO
HABÍAMOS TRABAJADO CON
CONSULTAS QUE
Consultas INVOLUCRABAN UNA SOLA
TABLA, AHORA VEREMOS
Multitabla COMO CREAR CONSULTAS
QUE OBTIENEN DATOS DE
DIFERENTES TABLAS.
Operaciones de Álgebra Relacional
implementadas en Transact-SQL

 La unión UNION
 La diferencia EXCEPT
 La intersección INTERSECT
 El producto cartesiano CROSS JOIN
 La composición interna INNER JOIN
 La composición externa LEFT JOIN, RIGHT JOIN Y FULL JOIN
Consulta 1
UNION ALL
Operador Union:
Unión de 2 Consulta 2
tablas.
Consiste en tomar dos tablas y
obtener una tabla con las filas de
las dos tablas.
En el resultado aparecerán las filas
de una tabla y, a continuación, las
filas de la otra tabla.

Para poder realizar la operación, las


dos tablas tienen que tener el
mismo esquema (mismo número de
columnas y tipos compatibles) y la
tabla resultante hereda los Nota: si incluye ALL incluye todos lo
encabezados de la primera tabla.
registros incluyendo los repetidos.
Consulta 1 Consulta 2

Oficina Ciudad Oficina Ciudad

1 Monterrey 7 Houston
8 Los Ángeles
2 Guadalajara
10 San Francisco
3 Saltillo
16 Chicago
Ejemplo
SELECT Oficina, Ciudad
Oficina Ciudad
FROM SucMexico 1 Monterrey
UNION 2 Guadalajara
SELECT Oficina, Ciudad 3 Saltillo
FROM SucEua 7 Houston
8 Los Ángeles
10 San Francisco
16 Chicago

Primero pone todas las oficinas de México y después las


de Estados Unidos.
Consulta 1
Operador
Except: la EXCEPT
diferencia Consulta 2

Aparecen en la tabla
resultante las filas de la
primera consulta que
no aparecen en la
segunda.
Las condiciones son las
mismas que las de la
unión.
Consulta 1 Consulta 2

Oficina Ciudad Oficina Ciudad


1 Monterrey 2 Guadalajara

2 Guadalajara 7 Houston
Ejemplo 3 Saltillo
8 Los Ángeles
10 San Francisco
10 San Francisco
SELECT Oficina, Ciudad 16 Chicago
FROM Sucursales1
EXCEPT
SELECT Oficina, Ciudad
FROM Sucursales2; Oficina Ciudad
1 Monterrey
3 Saltillo

Todas las oficinas de la consulta 1 menos las que se


encuentran en la consulta 2.
Consulta 1
INTERSECT
Operador Consulta 2
Intersect: la
intersección

Aparecen en la tabla
resultante las filas que
aparecen en la
primera consulta y en
la segunda.
Las condiciones son las
mismas que las de la
unión.
Consulta 1 Consulta 2

Oficina Ciudad Oficina Ciudad


1 Monterrey 2 Guadalajara

2 Guadalajara 7 Houston
Ejemplo 3 Saltillo
8 Los Ángeles
10 San Francisco
10 San Francisco
SELECT Oficina, Ciudad 16 Chicago
FROM Sucursales1
INTERSECT
SELECT Oficina, Ciudad
FROM Sucursales2; Oficina Ciudad
2 Guadalajara
10 San Francisco

Todas las oficinas que aparecen en las de la consulta 1


y en la consulta 2.
HASTA AHORA HEMOS
OPERADO CON TABLAS QUE
Composición de TENÍAN EL MISMO ESQUEMA,
PERO MUCHAS VECES LO QUE
NECESITAMOS ES OBTENER
Tablas UNA TABLA QUE TENGA EN
UNA MISMA FILA DATOS DE
VARIAS TABLAS,
Cross Join:
Producto SELECT lista_de_campos
Cartesiano
FROM Tabla1 CROSS JOIN
El producto cartesiano Tabla 2
obtiene todas las posibles
concatenaciones de filas Ó
de la primera tabla con
filas de la segunda tabla.
SELECT lista_de_campos
Se indica escribiendo en FROM Tabla1, Tabla 2
la cláusula FROM los
nombres de las tablas
separados por una coma
o utilizando el operador
CROSS JOIN.
Empleados Oficinas

No. Empleado Nombre Oficina Ciudad

1 Pedro 200 Houston


300 Los Ángeles
Ejemplo 2
3
Luis
Teresa
125 San Francisco
166 Chicago
SELECT *
FROM Empleados
CROSS JOIN
No. Empleado Nombre Oficina Ciudad
Oficinas;
1 Pedro 200 Houston
Ó
1 Pedro 300 Los Ángeles
SELECT *
1 Pedro 125 San Francisco
FROM Empleados, Oficinas;
1 Pedro 166 Chicago
2 Luis 200 Houston
2 Luis 300 Los Ángeles
2 Luis 125 San Francisco
2 Luis 166 Chicago
Hace una combinación de todos los empleados contra
todas las oficinas.
SELECT lista_de_campos
FROM Tabla1 INNER JOIN
Inner Join:
Composición Tabla 2 ON Condición
Interna

Una composición
interna es aquella en la
que los valores de las
columnas que se están
combinando se
comparan mediante
un operador de
comparación.
Empleados Oficinas
No. Empleado Nombre Oficina Oficina Ciudad

1 Pedro 300 200 Houston


2 Luis 125 300 Los Ángeles
Ejemplo 3 Teresa 200 125 San Francisco
4 Andrés 300
SELECT [No. Empleado], 166 Chicago
5 Antonio Null
Nombre, [Link],
Ciudad
FROM Empleados INNER JOIN
Oficinas
No. Empleado Nombre Oficina Ciudad
ON [Link] =
[Link]; 1 Pedro 300 Los Ángeles
2 Luis 125 San Francisco
3 Teresa 200 Houston
4 Andrés 300 Los Ángeles

Cada empleado con su respectiva oficina y ciudad.


Los empleados sin oficina no aparecen así como las
oficinas que no están asignadas a un empleado.
Left, Right y Full
Outer Join:
Composición
Externa
SELECT lista_de_campos
La composición FROM Tabla1 {LEFT, RIGHT, FULL} [OUTER]
externa se escribe de JOIN
manera similar al INNER
JOIN indicando una Tabla 2 ON Condición
condición de
combinación pero en
el resultado se añaden
filas que no cumplen la La palabra OUTER es opcional, no añade
condición de funcionalidad alguna.
combinación.
SELECT lista_de_campos
FROM Tabla1 LEFT [OUTER] JOIN
Left Outer Join: Tabla 2 ON Condición
Composición
Externa

LEFT JOIN devuelve todas las


filas de la tabla izquierda
(tabla 1), con las filas
coincidentes en la tabla de la
derecha (Tabla 2).
El resultado es NULL en el
lado derecho, cuando no
hay ninguna coincidencia..

La palabra OUTER es opcional, no añade


funcionalidad alguna.
Empleados Oficinas
No. Empleado Nombre Oficina Oficina Ciudad

1 Pedro 300 200 Houston


2 Luis 125 300 Los Ángeles
Ejemplo 3 Teresa 200 125 San Francisco
4 Andrés 300
SELECT [No. Empleado], 166 Chicago
5 Antonio NULL
Nombre, [Link],
Ciudad
FROM Empleados LEFT JOIN
Oficinas
ON [Link] = No. Empleado Nombre Oficina Ciudad
[Link];
1 Pedro 300 Los Ángeles
2 Luis 125 San Francisco
3 Teresa 200 Houston
4 Andrés 300 Los Ángeles
5 Antonio NULL NULL

Aparecen empleados con su respectiva oficina y


empleados que no tienen oficina.
SELECT lista_de_campos
FROM Tabla1 RIGHT [OUTER] JOIN
Right Outer Join: Tabla 2 ON Condición
Composición
Externa

RIGHT JOIN devuelve todas


las filas de la tabla derecha
(tabla 2), con las filas
coincidentes en la tabla de la
izquierda (Tabla 1).
El resultado es NULL en el
lado izquierdo, cuando no
hay ninguna coincidencia..

La palabra OUTER es opcional, no añade


funcionalidad alguna.
Empleados Oficinas
No. Empleado Nombre Oficina Oficina Ciudad

1 Pedro 300 200 Houston


2 Luis 125 300 Los Ángeles
Ejemplo 3 Teresa 200 125 San Francisco
4 Andrés 300
SELECT [No. Empleado], 166 Chicago
5 Antonio NULL
Nombre, [Link],
Ciudad
FROM Empleados RIGHT JOIN
Oficinas
ON [Link] = No. Empleado Nombre Oficina Ciudad
[Link];
1 Pedro 300 Los Ángeles
2 Luis 125 San Francisco
3 Teresa 200 Houston
4 Andrés 300 Los Ángeles
NULL NULL 166 Chicago

Aparecen empleados con su respectiva oficina y las


oficinas que no están asignadas a algún empleado.
SELECT lista_de_campos
FROM Tabla1 Full [OUTER] JOIN
Full Outer Join: Tabla 2 ON Condición
Composición
Externa

FULL JOIN devuelve todas las


filas de la tabla izquierda
(tabla 1) y las filas de la tabla
de la derecha (Tabla 2).
El resultado es NULL en cada
lado correspondiente,
cuando no hay ninguna
coincidencia..

La palabra OUTER es opcional, no añade


funcionalidad alguna.
Empleados Oficinas
No. Empleado Nombre Oficina Oficina Ciudad
1 Pedro 300 200 Houston
2 Luis 125 300 Los Ángeles
3 Teresa 200 125 San Francisco
Ejemplo 4 Andrés 300 166 Chicago
5 Antonio NULL
SELECT [No. Empleado],
Nombre, [Link],
Ciudad
FROM Empleados FULL JOIN No. Empleado Nombre Oficina Ciudad
Oficinas
1 Pedro 300 Los Ángeles
ON [Link] =
[Link]; 2 Luis 125 San Francisco
3 Teresa 200 Houston
4 Andrés 300 Los Ángeles
5 Antonio NULL NULL
NULL NULL 166 Chicago

Aparecen empleados con su respectiva oficina, los


empleados que no tienen asignada oficina y las
oficinas que no están asignadas a algún empleado.
Referencia Bibliográfica

“Funciones básicas de Transact-SQL”


Curso SQL Sever
[Link]

También podría gustarte