Está en la página 1de 22

SQL Server

Consultas Multitabla
ING. ROSALBA ARREDONDO MARTNEZ M.E.S.
HASTA EL MOMENTO
HABAMOS TRABAJADO CON
Consultas CONSULTAS QUE
INVOLUCRABAN UNA SOLA
TABLA, AHORA VEREMOS
Multitabla COMO CREAR CONSULTAS
QUE OBTIENEN DATOS DE
DIFERENTES TABLAS.

Ing. Rosalba Arredondo Martnez


Operaciones de lgebra Relacional
implementadas en Transact-SQL

La unin UNION
La diferencia EXCEPT
La interseccin INTERSECT
El producto cartesiano CROSS JOIN
La composicin interna INNER JOIN
La composicin externa LEFT JOIN, RIGHT JOIN Y FULL JOIN

Ing. Rosalba Arredondo Martnez


Consulta 1
UNION ALL
Operador Union:
Unin de 2 Consulta 2
tablas.
Consiste en tomar dos tablas y
obtener una tabla con las filas de
las dos tablas.
En el resultado aparecern las filas
de una tabla y, a continuacin, las
filas de la otra tabla.

Para poder realizar la operacin, las


dos tablas tienen que tener el
mismo esquema (mismo nmero 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.

Ing. Rosalba Arredondo Martnez


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 Mxico y despus las


Ing. Rosalba Arredondo Martnez 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
unin.

Ing. Rosalba Arredondo Martnez


Consulta 1 Consulta 2

Oficina Ciudad Oficina Ciudad


1 Monterrey 2 Guadalajara
7 Houston
Ejemplo
2 Guadalajara
8 Los ngeles
3 Saltillo
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.
Ing. Rosalba Arredondo Martnez
Consulta 1
INTERSECT
Operador Consulta 2
Intersect: la
interseccin

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
unin.

Ing. Rosalba Arredondo Martnez


Consulta 1 Consulta 2

Oficina Ciudad Oficina Ciudad


1 Monterrey 2 Guadalajara
7 Houston
Ejemplo
2 Guadalajara
8 Los ngeles
3 Saltillo
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.
Ing. Rosalba Arredondo Martnez
HASTA AHORA HEMOS
OPERADO CON TABLAS QUE
Composicin de TENAN EL MISMO ESQUEMA,
PERO MUCHAS VECES LO QUE
NECESITAMOS ES OBTENER
Tablas UNA TABLA QUE TENGA EN
UNA MISMA FILA DATOS DE
VARIAS TABLAS,

Ing. Rosalba Arredondo Martnez


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 clusula FROM los
nombres de las tablas
separados por una coma
o utilizando el operador
CROSS JOIN.

Ing. Rosalba Arredondo Martnez


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 combinacin de todos los empleados contra
Ing. Rosalba Arredondo Martnez
todas las oficinas.
SELECT lista_de_campos
FROM Tabla1 INNER JOIN
Inner Join:
Composicin Tabla 2 ON Condicin
Interna

Una composicin
interna es aquella en la
que los valores de las
columnas que se estn
combinando se
comparan mediante
un operador de
comparacin.

Ing. Rosalba Arredondo Martnez


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 Andrs 300
SELECT [No. Empleado], 166 Chicago
5 Antonio Null
Nombre, Empleados.Oficina,
Ciudad
FROM Empleados INNER JOIN
Oficinas
No. Empleado Nombre Oficina Ciudad
ON empleados.Oficina =
Oficinas.Oficina; 1 Pedro 300 Los ngeles
2 Luis 125 San Francisco
3 Teresa 200 Houston
4 Andrs 300 Los ngeles

Cada empleado con su respectiva oficina y ciudad.


Los empleados sin oficina no aparecen as como las
oficinas que no estn asignadas a un empleado.
Ing. Rosalba Arredondo Martnez
Left, Right y Full
Outer Join:
Composicin
Externa
SELECT lista_de_campos
La composicin FROM Tabla1 {LEFT, RIGHT, FULL} [OUTER]
externa se escribe de JOIN
manera similar al INNER
JOIN indicando una Tabla 2 ON Condicin
condicin de
combinacin pero en
el resultado se aaden
filas que no cumplen la La palabra OUTER es opcional, no aade
condicin de funcionalidad alguna.
combinacin.

Ing. Rosalba Arredondo Martnez


SELECT lista_de_campos
FROM Tabla1 LEFT [OUTER] JOIN
Left Outer Join: Tabla 2 ON Condicin
Composicin
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 aade


funcionalidad alguna.
Ing. Rosalba Arredondo Martnez
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 Andrs 300
SELECT [No. Empleado], 166 Chicago
5 Antonio NULL
Nombre, Empleados.Oficina,
Ciudad
FROM Empleados LEFT JOIN
Oficinas
ON empleados.Oficina = No. Empleado Nombre Oficina Ciudad
Oficinas.Oficina;
1 Pedro 300 Los ngeles
2 Luis 125 San Francisco
3 Teresa 200 Houston
4 Andrs 300 Los ngeles
5 Antonio NULL NULL

Aparecen empleados con su respectiva oficina y


empleados que no tienen oficina.
Ing. Rosalba Arredondo Martnez
SELECT lista_de_campos
FROM Tabla1 RIGHT [OUTER] JOIN
Right Outer Join: Tabla 2 ON Condicin
Composicin
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 aade


funcionalidad alguna.
Ing. Rosalba Arredondo Martnez
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 Andrs 300
SELECT [No. Empleado], 166 Chicago
5 Antonio NULL
Nombre, Empleados.Oficina,
Ciudad
FROM Empleados RIGHT JOIN
Oficinas
ON empleados.Oficina = No. Empleado Nombre Oficina Ciudad
Oficinas.Oficina;
1 Pedro 300 Los ngeles
2 Luis 125 San Francisco
3 Teresa 200 Houston
4 Andrs 300 Los ngeles
NULL NULL 166 Chicago

Aparecen empleados con su respectiva oficina y las


oficinas que no estn asignadas a algn empleado.
Ing. Rosalba Arredondo Martnez
SELECT lista_de_campos
FROM Tabla1 Full [OUTER] JOIN
Full Outer Join: Tabla 2 ON Condicin
Composicin
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 aade


funcionalidad alguna.
Ing. Rosalba Arredondo Martnez
Empleados Oficinas
No. Empleado Nombre Oficina Oficina Ciudad
1 Pedro 300 200 Houston
2 Luis 125 300 Los ngeles
3 Teresa 200
Ejemplo
125 San Francisco
4 Andrs 300 166 Chicago
5 Antonio NULL
SELECT [No. Empleado],
Nombre, Empleados.Oficina,
Ciudad
FROM Empleados FULL JOIN No. Empleado Nombre Oficina Ciudad
Oficinas
1 Pedro 300 Los ngeles
ON empleados.Oficina =
Oficinas.Oficina; 2 Luis 125 San Francisco
3 Teresa 200 Houston
4 Andrs 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
Ing. Rosalba Arredondo Martnez
oficinas que no estn asignadas a algn empleado.
Referencia Bibliogrfica

Funciones bsicas de Transact-SQL


Curso SQL Sever
http://www.aulaclic.es/sqlserver/b_3_3_1.htm

Ing. Rosalba Arredondo Martnez