Aller au contenu

Aide-mémoire — Jointures#

essentiel

Les deux jointures du quotidien#

SELECT * FROM a [INNER] JOIN b ON a.id = b.a_id;
SELECT * FROM a LEFT [OUTER] JOIN b ON a.id = b.a_id;

Autres formes avancé#

SELECT * FROM a RIGHT [OUTER] JOIN b ON a.id = b.a_id;   -- SQLite ≥ 3.39
SELECT * FROM a FULL [OUTER] JOIN b ON a.id = b.a_id;    -- SQLite ≥ 3.39
SELECT * FROM a CROSS JOIN b;
SELECT * FROM a NATURAL JOIN b;
SELECT * FROM a JOIN b USING (id);

Warning

NATURAL JOIN joint sur toutes les colonnes de même nom : le résultat change silencieusement dès qu'on ajoute une colonne. À éviter en production.

Résumé#

Type Résultat
INNER JOIN Lignes présentes dans les deux tables essentiel
LEFT JOIN Toutes les lignes de gauche + correspondances (NULL sinon) essentiel
RIGHT JOIN Toutes les lignes de droite + correspondances (NULL sinon) avancé
FULL JOIN Union de LEFT et RIGHT avancé
CROSS JOIN Produit cartésien avancé

Auto-jointure courant#

SELECT e1.nom, e2.nom AS manager
FROM employes e1
JOIN employes e2 ON e1.manager_id = e2.id;

SQLite

RIGHT JOIN et FULL OUTER JOIN disponibles seulement depuis la version 3.39 (2022). Avant, contourner avec un LEFT JOIN inversé + UNION.