SQL Izquierda combinación externa


Ejemplo

Una combinación externa izquierda (también conocida como combinación izquierda o externa) es una combinación que garantiza que todas las filas de la tabla izquierda estén representadas; si no existe una fila coincidente de la tabla derecha, sus campos correspondientes son NULL .

El siguiente ejemplo seleccionará todos los departamentos y el primer nombre de los empleados que trabajan en ese departamento. Los departamentos sin empleados aún se devuelven en los resultados, pero tendrán NULL para el nombre del empleado:

SELECT          Departments.Name, Employees.FName
FROM            Departments 
LEFT OUTER JOIN Employees 
ON              Departments.Id = Employees.DepartmentId

Esto devolvería lo siguiente de la base de datos de ejemplo :

Departamentos.Nombre Empleados. Nombre
HORA James
HORA Juan
HORA Johnathon
Ventas Miguel
Tecnología NULO

Entonces, ¿cómo funciona esto?

Hay dos tablas en la cláusula FROM:

Carné de identidad FName LName Número de teléfono ManagerId DepartmentId Salario Fecha de contratación
1 James Herrero 1234567890 NULO 1 1000 01-01-2002
2 Juan Johnson 2468101214 1 1 400 23-03-2005
3 Miguel Williams 1357911131 1 2 600 12-05-2009
4 Johnathon Herrero 1212121212 2 1 500 24-07-2016

y

Carné de identidad Nombre
1 HORA
2 Ventas
3 Tecnología

Primero se crea un producto cartesiano a partir de las dos tablas que dan una tabla intermedia.
Los registros que cumplen con los criterios de combinación ( Departments.Id = Employees.DepartmentId ) están resaltados en negrita; estos se pasan a la siguiente etapa de la consulta.

Como se trata de una JUNTA EXTERNA IZQUIERDA, todos los registros se devuelven del lado IZQUIERDO de la unión (Departamentos), mientras que a los registros en el lado DERECHO se les asigna un marcador NULO si no coinciden con los criterios de la unión. En la tabla de abajo esto devolverá Tech con NULL

Carné de identidad Nombre Carné de identidad FName LName Número de teléfono ManagerId DepartmentId Salario Fecha de contratación
1 HORA 1 James Herrero 1234567890 NULO 1 1000 01-01-2002
1 HORA 2 Juan Johnson 2468101214 1 1 400 23-03-2005
1 HORA 3 Miguel Williams 1357911131 1 2 600 12-05-2009
1 HORA 4 Johnathon Herrero 1212121212 2 1 500 24-07-2016
2 Ventas 1 James Herrero 1234567890 NULO 1 1000 01-01-2002
2 Ventas 2 Juan Johnson 2468101214 1 1 400 23-03-2005
2 Ventas 3 Miguel Williams 1357911131 1 2 600 12-05-2009
2 Ventas 4 Johnathon Herrero 1212121212 2 1 500 24-07-2016
3 Tecnología 1 James Herrero 1234567890 NULO 1 1000 01-01-2002
3 Tecnología 2 Juan Johnson 2468101214 1 1 400 23-03-2005
3 Tecnología 3 Miguel Williams 1357911131 1 2 600 12-05-2009
3 Tecnología 4 Johnathon Herrero 1212121212 2 1 500 24-07-2016

Finalmente, cada expresión utilizada en la cláusula SELECT se evalúa para devolver nuestra tabla final:

Departamentos.Nombre Empleados. Nombre
HORA James
HORA Juan
Ventas Ricardo
Tecnología NULO