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#
SQLite
RIGHT JOIN et FULL OUTER JOIN disponibles seulement depuis la version 3.39 (2022). Avant, contourner avec un LEFT JOIN inversé + UNION.