sql >> Base de Datos >  >> RDS >> Mysql

¿Cuándo usar una combinación externa izquierda?

Las combinaciones se utilizan para combinar dos tablas relacionadas.

En su ejemplo, puede combinar la tabla Empleado y la tabla Departamento, así:

SELECT FNAME, LNAME, DNAME
FROM
EMPLOYEE INNER JOIN DEPARTMENT ON EMPLOYEE.DNO=DEPARTMENT.DNUMBER

Esto daría como resultado un conjunto de registros como:

FNAME   LNAME   DNAME
-----   -----   -----
John    Smith   Research
John    Doe     Administration

Usé un INNER JOIN sobre. INNER JOIN s combinar dos tablas para que solo se muestran los registros con coincidencias en ambas tablas y se unen en este caso, en el número de departamento (campo DNO en Empleado, DNUMBER en la tabla Departamento).

LEFT JOIN s le permite combinar dos tablas cuando tiene registros en la primera tabla pero es posible que no tienen registros en la segunda tabla. Por ejemplo, supongamos que desea una lista de todos los empleados, además de los dependientes:

SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_last, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE INNER JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN

El problema aquí es que si un empleado no tiene un dependiente, su registro no aparecerá en absoluto, porque no hay ningún registro coincidente en la tabla DEPENDIENTES.

Entonces, usas una izquierda join que mantiene todos los datos a la "izquierda" (es decir, la primera tabla) y extrae los datos coincidentes a la "derecha" (la segunda tabla):

SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_first, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE LEFT JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN

Ahora tenemos todos de los registros de los empleados. Si no hay ningún dependiente que coincida con un empleado determinado, el dependent_first y dependent_last los campos serán nulos.