FULL OUTER JOIN - Jointure externe complète

Combiner toutes les lignes des deux tables

35 min
AVANCE
Objectifs de cette leçon
  • Comprendre le FULL OUTER JOIN
  • Combiner LEFT et RIGHT JOIN
  • Identifier les lignes sans correspondance des deux côtés
  • Utiliser FULL JOIN pour des audits

FULL OUTER JOIN - Jointure externe complète

Définition du FULL OUTER JOIN

Le FULL OUTER JOIN (ou FULL JOIN) combine les résultats de LEFT JOIN et RIGHT JOIN. Il retourne toutes les lignes des deux tables, qu'il y ait une correspondance ou non.

Les lignes sans correspondance auront des valeurs NULL pour les colonnes de l'autre table.

Syntaxe

SELECT colonnes
FROM table1
FULL OUTER JOIN table2 ON table1.colonne = table2.colonne;

FULL JOIN est un raccourci de FULL OUTER JOIN.

Combiner LEFT et RIGHT JOIN

FULL OUTER JOIN = LEFT JOIN + RIGHT JOIN :

  • Toutes les lignes de la table de gauche (avec NULL à droite si pas de correspondance)
  • + Toutes les lignes de la table de droite (avec NULL à gauche si pas de correspondance)

Conserver toutes les lignes des deux tables

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

Résultat :

  • Tous les employés (même sans département → dept_nom NULL)
  • + Tous les départements sans employés (→ nom, prenom NULL)

Exemples pratiques

FULL OUTER JOIN est utile pour :

  • 📊 Audits complets : comparer deux tables et trouver les différences
  • 🔍 Rapports exhaustifs : inclure toutes les données des deux côtés
  • 📈 Détection d'anomalies : lignes orphelines des deux côtés
  • 🔎 Réconciliation de données entre systèmes

Identifier les lignes sans correspondance de chaque côté

-- Lignes sans correspondance à gauche
SELECT e.nom, d.dept_nom
FROM EMPLOYES e
FULL OUTER JOIN DEPARTEMENTS d ON e.dept_id = d.dept_id
WHERE e.employe_id IS NULL;

-- Lignes sans correspondance à droite
WHERE d.dept_id IS NULL;

-- Les deux
WHERE e.employe_id IS NULL OR d.dept_id IS NULL;

Bonnes pratiques

  • ✅ Utiliser FULL OUTER JOIN pour des audits et comparaisons
  • ✅ Vérifier les NULL des deux côtés dans les résultats
  • ✅ Combiner avec IS NULL pour trouver les incohérences
  • ⚠️ Attention : peut retourner beaucoup de lignes
  • ⚠️ Performance : plus lent que INNER JOIN
Exemples de code
FULL OUTER JOIN : Employés et Départements

Toutes les lignes des deux tables

Résultat attendu : Tous les employés + tous les départements (avec NULL si pas de correspondance)

Employés sans département

Trouver les employés sans département avec FULL OUTER JOIN

Résultat attendu : Employés sans département valide

Départements sans employés

Trouver les départements vides avec FULL OUTER JOIN

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

Toutes les incohérences

Employés sans département OU départements sans employés

Résultat attendu : Lignes orphelines des deux côtés

FULL JOIN avec LOCALISATIONS

Départements et localisations (toutes les lignes)

Résultat attendu : Tous les départements + toutes les villes
Exercices pratiques
FULL OUTER JOIN basique
MOYEN
Affichez tous les employés et tous les départements avec FULL OUTER JOIN

Audit complet
MOYEN
Trouvez toutes les incohérences : employés sans département ET départements sans employés

FULL JOIN avec LOCALISATIONS
MOYEN
Affichez tous les départements et toutes les localisations

FULL JOIN avec PAYS
MOYEN
Affichez toutes les localisations et tous les pays

Comparaison complète
DIFFICILE
Comparez EMPLOYES et DEPARTEMENTS et comptez les lignes de chaque type (avec correspondance, sans correspondance gauche, sans correspondance droite)
Accueil