XamSQL — la salle de sport SQL des francophones

Jointure · 25 min

LEFT / RIGHT / FULL JOIN : garder tous les lignes d'un cote

Parfois on veut voir TOUTES les lignes d'une table, meme celles sans correspondance dans l'autre.

Contexte

Parfois on veut voir TOUTES les lignes d'une table, meme celles sans correspondance dans l'autre. Par exemple, lister les professeurs qui n'ont aucun cours, ou les etudiants sans inscription. C'est le role des outer joins.

Explication

LEFT JOIN (ou LEFT OUTER JOIN) retourne toutes les lignes de la table de gauche, et les colonnes de la table de droite sont remplis avec NULL si aucune correspondance.

Syntaxe : SELECT ... FROM t1 LEFT JOIN t2 ON t1.cle = t2.cle;

Points cles :

Exemple guidé

Objectif : trouver les professeurs sans cours.

1. Table professeurs (toutes les lignes), Table cours (certaines lignes seulement) 2. LEFT JOIN pour garder tous les professeurs 3. WHERE c.id IS NULL pour ne garder que ceux sans cours

SELECT p.prenom, p.nom
FROM professeurs p
LEFT JOIN cours c ON c.professeur_id = p.id
WHERE c.id IS NULL;
prenomnom
CheikhThiam

À retenir

LEFT JOIN garde toutes les lignes de la table de gauche. Les colonnes de la table de droite sont NULL si aucune correspondance. Pour trouver les absents : LEFT JOIN + WHERE cote_droite.cle IS NULL. RIGHT JOIN inverse les roles, FULL JOIN n'existe pas en SQLite.

Exercices de cette leçon

Faire les exercices →