Expression d'une jointure externe

SyntaxeJointure externe, gauche ou droite

Pour exprimer une jointure externe on se base sur la syntaxe INNER JOIN en utilisant à la place OUTER JOIN, LEFT OUTER JOIN ou RIGHT OUTER JOIN.

ExempleJointure externe gauche

1
SELECT Num
2
FROM Avion LEFT OUTER JOIN Vol
3
ON Avion.Num=Vol.Num

Cette requête permet de sélectionner tous les avions, y compris ceux non affectés à un vol.

Remarque

Remarquons que "Avion LEFT OUTER JOIN Vol" est équivalent à "Vol RIGHT OUTER JOIN Avion" en terme de résultat.

Intuitivement, on préfère utiliser la jointure gauche pour sélectionner tous les tuple du côté N d'une relation 1:N, même si il ne sont pas référencés ; et la jointure droite pour pour sélectionner tous les tuples d'une relation 0:N, y compris ceux qui ne font pas de référence. Cette approche revient à toujours garder à gauche de l'expression "JOIN" la relation "principale", i.e. celle dont on veut tous les tuples, même s'ils ne référencent pas (ou ne sont pas référencés par) la relation "secondaire".

Exemple

Exemple de jointure externe (SQL et Algèbre)

Exemple

Exemple de jointure externe gauche (SQL et Algèbre)

Exemple

Exemple de jointure externe droite (SQL et Algèbre)

MéthodeTrouver les enregistrements non joints

La jointure externe sert en particulier pour trouver les enregistrements d'une table qui ne sont pas référencés par une clé étrangère. Il suffit de sélectionner, après la jointure externe, tous les enregistrements pour lesquels la clé de la relation référençante est nulle, on obtient alors ceux de la relation référencée qui ne sont pas référencés.

Exemple de sélection d'enregistrements non référencés (SQL et Algèbre)