RIGHT JOIN - Jointure externe droite

Comprendre RIGHT JOIN et sa relation avec LEFT JOIN

30 min
INTERMEDIAIRE
Objectifs de cette leçon
  • Comprendre le fonctionnement de RIGHT JOIN
  • Connaître l'équivalence avec LEFT JOIN inversé
  • Savoir quand utiliser RIGHT JOIN
  • Identifier les lignes sans correspondance à droite

RIGHT JOIN - Jointure externe droite

Définition du RIGHT JOIN

Le RIGHT JOIN (ou RIGHT OUTER JOIN) est l'inverse du LEFT JOIN. Il retourne toutes les lignes de la table de droite, même si elles n'ont pas de correspondance dans la table de gauche.

Si une ligne de la table de droite n'a pas de correspondance, les colonnes de la table de gauche seront NULL.

Syntaxe

SELECT colonnes
FROM table1
RIGHT JOIN table2 ON table1.colonne = table2.colonne;

RIGHT OUTER JOIN est synonyme de RIGHT JOIN.

Équivalence avec LEFT JOIN inversé

Ces deux requêtes sont équivalentes :

-- RIGHT JOIN
SELECT e.nom, d.dept_nom
FROM EMPLOYES e
RIGHT JOIN DEPARTEMENTS d ON e.dept_id = d.dept_id;

-- LEFT JOIN inversé
SELECT e.nom, d.dept_nom
FROM DEPARTEMENTS d
LEFT JOIN EMPLOYES e ON d.dept_id = e.dept_id;

La plupart des développeurs préfèrent LEFT JOIN car il est plus intuitif.

Exemples : tous les départements même sans employés

SELECT d.dept_nom, e.nom, e.prenom
FROM EMPLOYES e
RIGHT JOIN DEPARTEMENTS d ON e.dept_id = d.dept_id;

Cette requête retourne tous les départements. Si un département n'a pas d'employés, e.nom et e.prenom seront NULL.

Quand utiliser RIGHT JOIN vs LEFT JOIN

  • LEFT JOIN : Plus courant, plus intuitif (on part de la table principale)
  • RIGHT JOIN : Utile dans certaines requêtes générées automatiquement
  • 💡 Conseil : Privilégiez LEFT JOIN en inversant l'ordre des tables

Dans la pratique, RIGHT JOIN est rarement utilisé car on peut toujours le remplacer par un LEFT JOIN.

Identifier les départements sans employés

SELECT d.dept_nom
FROM EMPLOYES e
RIGHT JOIN DEPARTEMENTS d ON e.dept_id = d.dept_id
WHERE e.employe_id IS NULL;

Bonnes pratiques

  • ✅ Préférer LEFT JOIN pour la clarté
  • ✅ Utiliser RIGHT JOIN seulement si l'ordre des tables est imposé
  • ✅ Documenter le choix de RIGHT JOIN dans le code
  • ⚠️ RIGHT JOIN peut rendre le code moins lisible
Exemples de code
RIGHT JOIN : Tous les départements

Afficher tous les départements avec leurs employés (même sans employés)

Résultat attendu : Tous les départements avec employés ou NULL

RIGHT JOIN équivalent à LEFT JOIN

Même résultat avec LEFT JOIN (ordre inversé)

Résultat attendu : Identique à l'exemple précédent

Départements sans employés

Trouver les départements vides avec RIGHT JOIN

Résultat attendu : Départements qui n'ont aucun employé

RIGHT JOIN avec LOCALISATIONS

Toutes les localisations avec ou sans départements

Résultat attendu : Toutes les villes avec département ou NULL

RIGHT JOIN avec comptage

Nombre d'employés par département (y compris 0)

Résultat attendu : Tous les départements avec leur nombre d'employés (0 si vide)
Exercices pratiques
RIGHT JOIN simple
FACILE
Utilisez RIGHT JOIN pour afficher tous les départements avec leurs employés

Convertir en LEFT JOIN
FACILE
Réécrivez la requête précédente avec LEFT JOIN au lieu de RIGHT JOIN

Localisations sans département
MOYEN
Trouvez les villes qui n'ont aucun département

Compter les employés par département
MOYEN
Affichez tous les départements avec le nombre d'employés (0 si aucun)

Pays sans localisation
DIFFICILE
Trouvez les pays qui n'ont aucune localisation enregistrée
Accueil