Cómo utilizar la combinación externa sql

Cuando se está uniendo dos tablas SQL, el primero (llamarlo el otro a la izquierda) puede tener filas que no tienen homólogos a juego en la segunda tabla (el de la derecha). Por el contrario, la tabla de la derecha puede tener filas que no tienen homólogos coincidentes en la tabla de la izquierda.

Si se realiza una combinación interna en esas tablas, todas las filas sin son excluidos de la salida. Las combinaciones externas, Sin embargo, no excluyen las filas sin competencia. Las combinaciones externas vienen en tres tipos: la externa izquierda, de combinación externa derecha, y unirse a la combinación externa completa.

Izquierda combinación externa

En una consulta que incluye una combinación, la mesa de la izquierda es la que precede a la palabra clave UNIRSE, y la tabla de la derecha es el que le sigue. los izquierda combinación externa preserva filas coincidentes procedentes de la tabla izquierda, pero descarta filas coincidentes procedentes de la tabla de la derecha.

Para comprender combinaciones externas, considere una base de datos corporativa que mantiene registros de los empleados, departamentos y ubicaciones de la empresa.

LOCATION_IDCIUDAD
1Bostón
3Tampa
5Chicago

Aquí la empresa un seguimiento de los departamentos.

DEPT_IDLOCATION_IDNOMBRE
211Ventas
241Administración
275Reparar
295Valores

Aquí la empresa un seguimiento de los empleados.

EMP_IDDEPT_IDNOMBRE
6124Iglesia
6327McCoy

Ahora supongamos que desea ver todos los datos de todos los empleados, incluyendo el departamento y la ubicación. Usted consigue esto con una combinación de igualdad:

* SELECT de la ubicación L, DEPT D, EMPLEADOS EWHERE L.LocationID = D.LocationIDAND D.DeptID = E.DeptID -

Esta sentencia produce el siguiente resultado:

1 Boston 24 61 24 1 administración Kirk5 Chicago 27 5 63 27 Reparación McCoy

Esta tabla de resultados da todos los datos de todos los empleados, incluyendo la ubicación y el departamento. El equi-join funciona debido a que cada empleado tiene un lugar y un departamento.

A continuación, supongamos que desea que los datos sobre los lugares, con los datos del departamento y de los empleados relacionados. Este es un problema diferente porque puede existir un lugar sin ningún tipo de servicios que colaboran. Para obtener lo que desea, usted tiene que utilizar una combinación externa, como en el siguiente ejemplo:

SELECT * FROM UBICACIÓN L LEFT OUTER JOIN DEPT DON (L.LocationID = D.LocationID) LEFT OUTER JOIN EON empleado (D.DeptID = E.DeptID) -

Esto se unen a los datos saca de tres tablas. En primer lugar, la ubicación de la tabla se une a la tabla DEPT. El conjunto de resultados se une entonces a la tabla EMPLOYEE. Las filas de la tabla a la izquierda de la IZQUIERDA COMBINACIÓN EXTERNA operador que no tienen fila correspondiente en la tabla de la derecha están incluidos en el resultado.

Así, en la primera combinación, todas las ubicaciones se incluyen, aunque no existe una sección asociada con ellos. En la segunda unirse, todos los departamentos se incluyen, aunque no exista ningún empleado asociado con ellos. El resultado es el siguiente:

1 Boston 24 61 24 1 administración Kirk5 Chicago 27 5 63 27 Reparación McCoy3 Tampa NULL NULL NULL NULL NULL NULL5 Chicago 29 5 Stock NULL NULL NULL1 Boston 21 1 Ventas NULL NULL NULL

Las dos primeras filas son las mismas que las dos filas de resultados en el ejemplo anterior. La tercera fila (3 Tampa) Tiene nulos en las columnas de departamento y los empleados, porque no hay departamentos se definen para Tampa y sin empleados están estacionados allí.

Video: Ejemplo simple de SELECT con JOIN de tablas

Las filas cuarta y quinta (5 Chicago y 1 Boston) Contienen datos sobre la Valores y el Ventas departamentos, pero la Empleado columnas para estas filas contienen valores nulos debido a que estos dos departamentos no tienen empleados. Esta combinación externa te dice todo lo que la combinación de igualdad le dijo - además de lo siguiente:

  • Todas las ubicaciones de la empresa, si tienen o no departamentos

  • Todos los departamentos de la empresa, si tienen o no empleados

Las filas devueltas en el ejemplo anterior, no se garantiza que sea en el orden que desee. La orden puede variar de una aplicación a otra. Para asegurarse de que las filas devueltas están en el orden que desee, añadir una ORDER BY cláusula a su SELECCIONAR declaración, de esta manera:

SELECT * FROM UBICACIÓN L LEFT OUTER JOIN DEPT DON (L.LocationID = D.LocationID) LEFT OUTER JOIN EON empleado (D.DeptID = E.DeptID) ORDER BY L.LocationID, D.DeptID, E.EmpID-

Puede abreviar la combinación externa izquierda de la lengua como LEFT JOIN porque no hay tal cosa como una izquierda interior unirse.

Derecho combinación externa

los correcta combinación externa preserva filas sin de la tabla derecha, pero descarta filas coincidentes procedentes de la tabla izquierda. Se puede utilizar en las mismas tablas y obtener el mismo resultado invirtiendo el orden en que se presentan tablas de la unión:

Video: Conectar con SQL Server desde Excel | VBA Excel 2013 #50

SELECT * FROM EMPLEADOS E RIGHT OUTER JOIN DEPARTAMENTO DE DON (D.DeptID = E.DeptID) RIGHT OUTER JOIN LON UBICACIÓN (L.LocationID = D.LocationID) -

En esta formulación, la primera combinación produce una tabla que contiene todos los departamentos, si tienen un empleado asociado o no. El segundo unirse produce una tabla que contiene todas las ubicaciones, si tienen una sección asociada o no.

Puede abreviar combinación externa derecha lenguaje como RIGHT JOIN porque no hay tal cosa como un derecho interior unirse.

externa completa

los externa completa combina las funciones de la combinación externa izquierda y se unen al exterior derecha. Conserva las filas coincidentes procedentes tanto de la las mesas izquierdo y derecho. Considere el caso más general de la base de datos de empresa se utiliza en los ejemplos precedentes. Podría tener

  • Lugares con ningún departamento

  • Departamentos con ninguna ubicación

  • Departamentos sin empleados

  • Los empleados con ningún departamento

Para mostrar todas las localizaciones, departamentos y empleados, independientemente de si tienen filas correspondientes de las otras mesas, utilizar una combinación externa completa de la siguiente forma:

SELECT * FROM UBICACIÓN L combinación externa completa DEPARTAMENTO DE DON (L.LocationID = D.LocationID) combinación externa completa EON EMPLEADO (D.DeptID = E.DeptID) -

Se puede abreviar el lleno de combinación externa lenguaje como full join porque no hay tal cosa como una completa interior unirse.

Artículos Relacionados