SQL Server Consultas Multitabla

June 2, 2017 | Autor: Ross A.m. | Categoria: Information Systems
Share Embed


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

Copyright © 2017 DADOSPDF Inc.