SQL Server Consultas Multitabla
Descrição do Produto
SQL Server Consultas Multitabla ING. ROSALBA ARREDONDO MARTÍNEZ M.E.S.
Consultas Multitabla
Ing. Rosalba Arredondo Martínez
HASTA EL MOMENTO HABÍAMOS TRABAJADO CON CONSULTAS QUE INVOLUCRABAN UNA SOLA TABLA, AHORA VEREMOS 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
Ing. Rosalba Arredondo Martínez
Consulta 1 Operador Union: Unión de 2 tablas.
UNION ALL Consulta 2
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 encabezados de la primera tabla.
Ing. Rosalba Arredondo Martínez
Nota: si incluye ALL incluye todos lo registros incluyendo los repetidos.
Consulta 2
Consulta 1 Oficina
Ciudad
Oficina
Ciudad
1
Monterrey
7
Houston
2
Guadalajara
8
Los Ángeles
3
Saltillo
10
San Francisco
16
Chicago
Ejemplo SELECT Oficina, Ciudad
Oficina
Ciudad
1
Monterrey
UNION
2
Guadalajara
SELECT Oficina, Ciudad
3
Saltillo
FROM SucEua
7
Houston
8
Los Ángeles
10
San Francisco
16
Chicago
FROM SucMexico
Ing. Rosalba Arredondo Martínez
Primero pone todas las oficinas de México y después las de Estados Unidos.
Operador Except: la diferencia 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.
Ing. Rosalba Arredondo Martínez
Consulta 1 EXCEPT Consulta 2
Consulta 1
Ejemplo SELECT Oficina, Ciudad
Consulta 2
Oficina
Ciudad
Oficina
Ciudad
1
Monterrey
2
Guadalajara
2
Guadalajara
7
Houston
3
Saltillo
8
Los Ángeles
10
San Francisco
10
San Francisco
16
Chicago
FROM Sucursales1
EXCEPT SELECT Oficina, Ciudad FROM Sucursales2;
Ing. Rosalba Arredondo Martínez
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 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.
Ing. Rosalba Arredondo Martínez
Consulta 2
Consulta 1
Ejemplo SELECT Oficina, Ciudad
Consulta 2
Oficina
Ciudad
Oficina
Ciudad
1
Monterrey
2
Guadalajara
2
Guadalajara
7
Houston
3
Saltillo
8
Los Ángeles
10
San Francisco
10
San Francisco
16
Chicago
FROM Sucursales1
INTERSECT SELECT Oficina, Ciudad FROM Sucursales2;
Ing. Rosalba Arredondo Martínez
Oficina
Ciudad
2
Guadalajara
10
San Francisco
Todas las oficinas que aparecen en las de la consulta 1 y en la consulta 2.
Composición de Tablas
Ing. Rosalba Arredondo Martínez
HASTA AHORA HEMOS OPERADO CON TABLAS QUE TENÍAN EL MISMO ESQUEMA, PERO MUCHAS VECES LO QUE NECESITAMOS ES OBTENER UNA TABLA QUE TENGA EN UNA MISMA FILA DATOS DE VARIAS TABLAS,
Cross Join: Producto Cartesiano El producto cartesiano obtiene todas las posibles concatenaciones de filas de la primera tabla con filas de la segunda tabla. Se indica escribiendo en la cláusula FROM los nombres de las tablas separados por una coma o utilizando el operador CROSS JOIN. Ing. Rosalba Arredondo Martínez
SELECT lista_de_campos FROM Tabla1 CROSS JOIN Tabla 2 Ó SELECT lista_de_campos FROM Tabla1, Tabla 2
Oficinas
Empleados
Ejemplo
No. Empleado
Nombre
Oficina
Ciudad
1
Pedro
200
Houston
2
Luis
300
Los Ángeles
3
Teresa
125
San Francisco
166
Chicago
SELECT * FROM Empleados CROSS JOIN Oficinas; Ó SELECT * FROM Empleados, Oficinas;
Ing. Rosalba Arredondo Martínez
No. Empleado
Nombre
Oficina
Ciudad
1
Pedro
200
Houston
1
Pedro
300
Los Ángeles
1
Pedro
125
San Francisco
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
Inner Join: Composició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.
Ing. Rosalba Arredondo Martínez
FROM Tabla1 INNER JOIN Tabla 2 ON Condición
Empleados
Ejemplo SELECT [No. Empleado], Nombre, Empleados.Oficina, Ciudad
Oficinas
No. Empleado
Nombre
Oficina
Oficina
Ciudad
1
Pedro
300
200
Houston
2
Luis
125
300
Los Ángeles
3
Teresa
200
125
San Francisco
4
Andrés
300
5
Antonio
Null
166
Chicago
FROM Empleados INNER JOIN Oficinas ON empleados.Oficina = Oficinas.Oficina;
Ing. Rosalba Arredondo Martínez
No. Empleado
Nombre
Oficina
Ciudad
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 La composición externa se escribe de manera similar al INNER JOIN indicando una condición de combinación pero en el resultado se añaden filas que no cumplen la condición de combinación. Ing. Rosalba Arredondo Martínez
SELECT lista_de_campos
FROM Tabla1 {LEFT, RIGHT, FULL} [OUTER] JOIN Tabla 2 ON Condición
La palabra OUTER es opcional, no añade funcionalidad alguna.
SELECT lista_de_campos
Left Outer Join: Composición Externa
FROM Tabla1 LEFT [OUTER] JOIN Tabla 2 ON Condición
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. Ing. Rosalba Arredondo Martínez
Empleados
Ejemplo SELECT [No. Empleado], Nombre, Empleados.Oficina, Ciudad
Oficinas
No. Empleado
Nombre
Oficina
Oficina
Ciudad
1
Pedro
300
200
Houston
2
Luis
125
300
Los Ángeles
3
Teresa
200
125
San Francisco
4
Andrés
300
5
Antonio
NULL
166
Chicago
FROM Empleados LEFT JOIN Oficinas ON empleados.Oficina = Oficinas.Oficina;
Ing. Rosalba Arredondo Martínez
No. Empleado
Nombre
Oficina
Ciudad
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
Right Outer Join: Composición Externa
FROM Tabla1 RIGHT [OUTER] JOIN Tabla 2 ON Condición
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. Ing. Rosalba Arredondo Martínez
Empleados
Ejemplo SELECT [No. Empleado], Nombre, Empleados.Oficina, Ciudad
Oficinas
No. Empleado
Nombre
Oficina
Oficina
Ciudad
1
Pedro
300
200
Houston
2
Luis
125
300
Los Ángeles
3
Teresa
200
125
San Francisco
4
Andrés
300
5
Antonio
NULL
166
Chicago
FROM Empleados RIGHT JOIN Oficinas ON empleados.Oficina = Oficinas.Oficina;
Ing. Rosalba Arredondo Martínez
No. Empleado
Nombre
Oficina
Ciudad
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
Full Outer Join: Composición Externa
FROM Tabla1 Full [OUTER] JOIN Tabla 2 ON Condición
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. Ing. Rosalba Arredondo Martínez
Empleados
Ejemplo SELECT [No. Empleado], Nombre, Empleados.Oficina, Ciudad FROM Empleados FULL JOIN Oficinas ON empleados.Oficina = Oficinas.Oficina;
Ing. Rosalba Arredondo Martínez
Oficinas
No. Empleado
Nombre
Oficina
Oficina
Ciudad
1
Pedro
300
200
Houston
2
Luis
125
300
Los Ángeles
3
Teresa
200
125
San Francisco
4
Andrés
300
166
Chicago
5
Antonio
NULL
No. Empleado
Nombre
Oficina
Ciudad
1
Pedro
300
Los Ángeles
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 http://www.aulaclic.es/sqlserver/b_3_3_1.htm
Ing. Rosalba Arredondo Martínez
Lihat lebih banyak...
Comentários