Déclaration de jointure dans SQL

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

Venn diagramme représentant la jointure gauche, entre les tableaux a et B, d’une instruction SQL

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

diagramme de Venn représentant la jointure gauche, entre les tableaux a et B, en ajoutant une condition où les touches B sont nulles

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.

« 48BBB1E1E9″>

Employé département nom de famille iddépartement nom iddépartement gaspar 36 null null

JOIN OUTER OUTER DROITE DU JOINDITAR

<71912f1539 ">

Diagramme de Venn représentant la bonne jointure, entre les tables A et B, d’une instruction SQL

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 Departamento
Apellido IDDepartamento NombreDepartamento IDDepartamento
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

Diagrama de Venn representando el RIGHT JOIN, Entre las Tablas A y B, agregando una condición Donde las claves de pour nulas

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 Departamento
Apellido IDDepartamento NombreDepartamento IDDepartamento
sur

sur

mercadeo

35

equivalencia Entre gauche JOIN et droit JOINEditar

left join equivalente al RIGHT JOIN antérieure

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

Combinación completa (Full OUTER JOIN) Editar

Diagrama de Venn representando el full join, Entre Las Tablas A y B, una Sentence de SQL

Esta Operación presenta los resultados de Tabla Tabla izquierda derecha y aunque ou Tengan correspondencia alguna en Otra Tabla. La Tabla combinada contendrá, then, Todos los registros de Ambas tablas y presentará valores nulos NULLS para registros que Pareja.

En el diagrama de la derecha, el Zone anaranjada repré los empleados Que Están Asociados un non Departamento, zone pour Amarilla el los eMPLEADOS Qué estan en ningún ou Departamento, y el verde zone pour los que no Tienen departamentos empleados.

Definición de combinación externa completa:

 SELECT * FROM empleado FULL OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento

Departamento Empleado
NombreDepartamento IDDepartamento Apellido IDDepartamento
Mercadeo

35

sur

sur

Steinberg

33

Ingeniería

33

31

Empleado Departamento
Apellido IDDepartamento NombreDepartamento IDDepartamento
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

Diagrama de Venn representando el full join, Entre las Tablas A y B, agregando condiciones Donde la clave de o la B pour nulas

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)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Empleado Gaspar

36

sur

sur
sur

sur

Mercadeo

35