Formation PUB200 : MySQL, 2018 Jointures

10.4 Jointure externe


La jointure externe retourne les enregistrements qui répondent à une condition (comme un INNER JOIN) mais ajoute ensuite les enregistrement :

  • de la table gauche qui n'ont pas de correspondance (LEFT OUTER JOIN)

    ou

  • de la table droite qui n'ont pas de correspondance (RIGHT OUTER JOIN)

    ou

  • les deux (FULL OUTER JOIN).

Prenez note que MySQL ne supporte pas directement le FULL OUTER JOIN.

Pourquoi aurait-on besoin d’une jointure externe ?

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 :

MySQL

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.

jointure externe

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 :

MySQL

SELECT * FROM clients

LEFT OUTER JOIN factures

ON client_id = clients.id;

donnera le même résultat que :

MySQL

SELECT * FROM factures

RIGHT OUTER JOIN clients

ON client_id = clients.id;

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre