La jointure externe retourne les enregistrements qui répondent à une condition (comme un INNER JOIN) mais ajoute ensuite les enregistrement :
ou
ou
Prenez note que MySQL ne supporte pas directement le FULL OUTER JOIN.
La jointure externe sera utilisée par exemple si on désire avoir la liste de tous les clients avec, pour chacun, la liste des factures, alors qu'on souhaite que les clients n'ayant reçu aucune facture apparaissent également dans la liste.
Ex :
SELECT clients.id, clients.nomfamille, clients.prenom, factures.id, factures.id, factures.date FROM clients
LEFT OUTER JOIN factures
ON client_id = clients.id;
On voit que la table clients (celle de gauche dans la requête utilisant LEFT OUTER JOIN) a des enregistrements qui n'ont pas de correspondance.

On obtiendrait le même résultat si on inversait les tables dans la requête... et qu'on changeait le LEFT OUTER JOIN pour un RIGHT OUTER JOIN.
L'important, c'est que le côté de la jointure pointe vers la table qui doit voir tous ses enregistrements affichés, même ceux qui n'ont pas de correspondance dans l'autre table.
Ex :
SELECT * FROM clients
LEFT OUTER JOIN factures
ON client_id = clients.id;
donnera le même résultat que :
SELECT * FROM factures
RIGHT OUTER JOIN clients
ON client_id = clients.id;
▼Publicité