Le mot-clé FULL OUTER JOIN renvoie tous les enregistrements lorsqu’il existe une correspondance dans les enregistrements de table de gauche (table1) ou de droite (table2). FULL OUTER JOIN et FULL JOIN sont identiques.
FULL OUTER JOIN peut potentiellement renvoyer de très grands ensembles de résultats. Parce que FULL OUTER JOIN renvoie tous les enregistrements correspondants des deux tables, que l’autre table corresponde ou non.
Syntaxe:
SELECT nom_colonne(s)
FROM table1
FULL OUTER JOIN table2
ON table1.nom_colonne = table2.nom_colonne
WHERE condition;
Base de données DB2 :
Examinons les données du tableau “Commandes” ci-dessous :
Numéro-Commande | Numéro-Client | Date-Commande |
---|---|---|
1001 | 10 | 2020-09-08 |
1002 | 99 | 2020-09-01 |
1003 | 17 | 2020-08-25 |
1004 | 76 | 2020-09-19 |
1005 | 44 | 2020-09-25 |
Examinons les données du tableau “Clients” ci-dessous :
Numéro-Client | Nom-Client | Pays |
---|---|---|
76 | Jack | Amérique |
17 | Jancy | Allemagne |
20 | Carmen | Russie |
10 | robert | Inde |
99 | Brian | Chine |
Notez que la colonne « Numéro de client » dans la table « Commandes » fait référence au « Numéro de client » dans la table « Clients ». La relation entre les deux tables ci-dessus est la colonne “Numéro-Client”.
Voyons comment créer une instruction SQL qui sélectionnera tous les clients et toutes les commandes :
SELECT Clients.Nom_Client, Commandes.Numero_Commande
FROM Clients
FULL OUTER JOIN Commandes ON Clients.Numero_Client = Commandes.Numero_Client
ORDER BY Clients.Nom_Client;
Résultat:
Nom-Client | Numéro-Commande |
---|---|
Brian | 1002 |
Carmen | null |
Jack | 1004 |
Jancy | 1003 |
robert | 1001 |
null | 1005 |