Cette opération n’est pas requise à partir d’un enregistrement dans un tableau pour avoir un enregistrement lié au dossier. L’enregistrement est maintenu dans le tableau combiné bien qu’il n’y ait pas de correspondant dans l’autre table.
Il existe trois types de combinaisons externes, la jointure gauche, la droite JOIN et la jointure pleine, où tous les dossiers sont pris de la table à gauche, tout ou partie de la table de droite, ou tous les enregistrements respectivement.
gAUCHE JOINEDITAR
le résultat de cette opération contient toujours tous les enregistrements de la table à gauche (la première table mentionnée dans la requête), peu importe qu’il y ait un enregistrement correspondant dans le tableau à droite.
la LEFT JOIN L’instruction renvoie la paire de toutes les valeurs de la table de gauche avec les valeurs de la table droite correspondante, s’il y a ou renvoyez une valeur null null dans les champs du Ta Bon Blah quand il n’y a pas de correspondance.
Contrairement au résultat présenté dans les exemples de combinaison interne dans laquelle l’employé n’a pas été montré dont le ministère n’existait pas, dans l’exemple suivant, les employés ayant leur département respectif seront présentés et, en outre, un employé dont le ministère n’existe pas.
L’employé qui n’a aucun appartement est situé dans la zone jaune du diagramme à droite, tandis que les employés avec le département sont dans la zone orange, à l’intersection de A et B.
Exemple de jointure gauche pour la combinaison externe:
SELECT * FROM empleado LEFT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
employé | Département | |||
---|---|---|---|---|
Nom | IDDepartment | Nom | IDDepartment | |
33 | 33 | 33 | ||
Andrade | 31 | Ventes | 31 | |
róbinson | 34 | production | 34 | |
zolano | 34 | 34 | ||
gaspar | 36 | null | null | |
steinberg | 33 | ingénierie | 33 |
JOIN DE GAUCHE À L’EXCLUANT L’INTERSECTION
si vous voulez afficher uniquement les enregistrements de la première table qui n’ont pas correspondant dans la seconde, vous pouvez ajouter la condition n adéquat dans la clause Where. Cela nous donnera des employés qui ne sont affectés à aucun département, qui dans le diagramme de droite sont représentés en jaune.
JOIN OUTER OUTER DROITE DU JOINDITAR
Cette opération est une image réfléchie de la précédente; Le résultat de cette opération contient toujours tous les enregistrements du tableau à droite (la deuxième table mentionnée dans la requête), que cela existe ou non un enregistrement correspondant dans le tableau à gauche.
Le bonne phrase OUTER JOIN renvoie toutes les valeurs de la table de droite avec les valeurs de la table de gauche correspondante, le cas échéant, ou retourner une valeur null null dans les champs de la table à gauche quand il n’y a pas de correspondance.
Dans le diagramme à droite, les départements qui n’ont pas d’employés sont dans la zone verte, tandis que les départements des employés sont dans la zone orange, à l’intersection de A et B.
Definición de droit d’inscription par la combinación externa:
SELECT * FROM empleado RIGHT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
Empleado |
||
---|---|---|
Apellido | ||
Zolano
34 PRODUCCIÓN 34 |
||
Jordanie
33 Ingeniería 33 |
||
Robinson
34 PRODUCCIÓN 34 |
||
Steinberg
33 Ingeniería 33 |
||
Andrade
31 Ventas 31 |
||
sur | sur
catalogue Cadeo 35 |
En Este caso el zone de mercadeo fue presentada en los resultados, aunque intense ou Hay empleados registrados en dicha zone.
Joignez-vous à droite excluyendo la intersecciónEditar
Si se quieren mostrar los registros solo Tabla de la Departamento de que Tengan ou correspondientes en la Tabla de Empleado, est Puede agregar la adecuada condición en la cláusula Où. Nos seconde esto Que los departamentos ou Tengan asignados Ningún empleado. En el diagrama de la derecha, esto se repré en verde.
SELECT * FROM empleado RIGHT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento WHERE empleado.IDDepartamento IS NULL
Empleado | ||
---|---|---|
Apellido | ||
sur | sur
mercadeo 35 |
equivalencia Entre gauche JOIN et droit JOINEditar
Hay una totale equivalencia Entre las Qué Usan sentencias gauche Rejoignez y las Usan Que rejoindre. Todo lo que se puede hacer con uno se puede hacer con el otro. Cambiando la perspectiva de Do es la Tabla Izquierda y entendre es la Tabla derecha, y teniendo Cuidado con las condiciones, est Puede hacer la Sentence equivalente.
Por Ejemplo, Hagamos el RIGHT JOIN antérieure pero esta vez usando gauche Rejoindre. RIGHT JOIN en el est antérieure consideraba Empleado Tabla la la izquierda y la Tabla Departamento de la derecha. Para hacer un gauche Rejoindre equivalente cambiamos de perspectiva y « volteamos » las tablas. Consideremos Ahora la Tabla Departamento de la Izquierda y la Tabla de la derecha Empleado. Podemos obtener exactamente el mismo resultado con la Sentence Suivante:
SELECT * FROM departamento LEFT OUTER JOIN empleado ON departamento.IDDepartamento = empleado.IDDepartamento WHERE empleado.IDEmpleado IS NULL
Departamento | |||||
---|---|---|---|---|---|
NombreDepartamento | |||||
Mercadeo
35 | sur | sur |
Empleado | |||
---|---|---|---|
Apellido | |||
Zolano
34 PRODUCCIÓN 34 |
|||
Jordanie
33 Ingeniería 33 | |||
Robinson
34 PRODUCCIÓN 34 |
|||
Gaspar
36 | sur | sur | |
Andrade
31 Ventas |
|||
sur | sur
Mercadeo 35 |
Como se puede Notar, en Este caso se encuentra el empleado Gaspar con valeur nulo en su zone correspondiente, y se muestra además el Departamento de Mercadeo con valeur nulo en los empleados de la région ESA.
Algunos Sistemas de bases de datos ou soportan Esta funcionalidad, pero esta Puede Ser emulada à través de las combinaciones de Tabla izquierda, Tabla derecha y de la Sentence de l’Union Union.
El mismo ejemplo Puede expresarse así:
SELECT * FROM empleado LEFT JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento UNION SELECT * FROM empleado RIGHT JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
Full Rejoignez excluyendo la intersecciónEditar
E Elle est quieren mostrar solo los registros de las tablas Quê ou Tengan correspondencia en la Otra, est Pueden agregar las condiciones adecuadas en la cláusula Où.
En el diagrama de la derecha, el zone Amarilla repré de Qué los ou Están asignados à Ningún Departamento, mientras que el zone verde repré los departamentos que no empleados de Tienen.
SELECT * FROM empleado FULL OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento WHERE (empleado.IDDepartamento IS NULL) OR (departamento.IDDepartamento is NULL)
Empleado Gaspar
| 36 sur
| sur |
| ||
---|---|---|---|---|---|
sur | sur
Mercadeo 35 |