Jointure OUTER

Navigation:  Les modules métier > Les règles de production > les requêtes SQL > Opérateurs relationnels >

Jointure OUTER

Previous pageReturn to chapter overviewNext page

Fait la jointure de deux tables en fonction des valeurs communes entre les deux, incluant les non correspondances.

 

SELECT liste_de_colonnes

 

FROM référence_de_table

  LEFT | RIGHT | FULL [OUTER] JOIN référence_de_table

   ON prédicat

 [LEFT | RIGHT | FULL [OUTER] JOIN référence_de_table

 

   ON prédicat...]

 

Description

 

 

 

Dans l'instruction ci-dessous, les tables CLIENT et COMMANDES sont jointes en fonction des valeurs dans la colonne NOCLI, présente dans les deux tables. Pour les lignes de CLIENT qui n'ont pas une valeur correspondante entre CLIENT.NOCLI et COMMANDES.NOCLI, les colonnes de COMMANDES contiennent des valeurs NULL.

 

SELECT *

 

FROM client C

 LEFT OUTER JOIN commandes O

 

   ON (C.nocli = O.nocli)

 

Le modificateur LEFT fait que toutes les lignes de la table à gauche de l'opérateur OUTER JOIN sont incluses dans l'ensemble résultant, avec ou sans correspondance dans la table à droite. S'il n'y a pas de ligne correspondante de la table à droite, ses colonnes contiennent des valeurs NULL. Le modificateur RIGHT, fait que toutes les lignes de la table à droite de l'opérateur OUTER JOIN sont incluses dans l'ensemble résultant, avec ou sans correspondance. S'il n'y a pas de ligne correspondante de la table à gauche, ses colonnes contiennent des valeurs NULL. Le modificateur FULL fait que toutes les lignes de toutes les tables spécifiées dans la clause FROM sont incluses dans l'ensemble résultant, avec ou sans corrrepondances. S'il n'y a pas de ligne correspondante d'une des tables, ses colonnes contiennent des valeurs NULL.

 

Plusieurs tables peuvent être jointes au moyen d'un INNER JOIN. L'utilisation de l'opérateur INNER JOIN et de la clause correspondante ON sont requis pour chaque ensemble de deux tables jointes. Un prédicat de comparaison de colonnes dans une clause ON est requis pour chaque colonne comparée pour joindre les tables deux à deux. L'instruction ci-dessous joint la table CLIENT à COMMANDES, puis COMMANDES à ARTICLES. Dans ce cas, la table de jointure COMMANDES agit comme table source pour la table de jointure ARTICLES.

 

SELECT *

 

FROM client C

 FULL OUTER JOIN commandes O

   ON (C.nocli = O.nocli)

 FULL OUTER JOIN articles I

 

   ON (O.nocommande = I.nocommande)

 

Les tables peuvent aussi être jointes au moyen d'expressions générant une valeur unique pour le prédicat de comparaison de jointure. Ici, les colonnes ID1 et ID2 dans JOINING sont comparées séparément à deux valeurs générées par la fonction SUBSTRING au moyen de la colonne unique ID dans SOURCE.

 

SELECT *

 

 

 RIGHT OUTER JOIN joining J

   ON (SUBSTRING(S.ID FROM 1 FOR 2) = J.ID1) AND

 

   (SUBSTRING(S.ID FROM 3 FOR 1) = J.ID2)

 

Une clause ORDER BY dans les instructions OUTER JOIN peut utiliser des colonnes de n'importe quelle table spécifiée dans la clause FROM pour trier l'ensemble résultant.