LEFT JOIN, NULL et COALESCE
Identifier les données manquantes ou incomplètes.
Avancé
Syntaxe SQL
Cas finance/compta
Exercices associés
Objectif
Savoir conserver les lignes sans correspondance et traiter les valeurs NULL dans les calculs.
Contexte de l'exercice
Pour analyser les impayés, il faut conserver les factures même lorsqu'aucun règlement n'existe. Une jointure classique peut faire disparaître ces factures. LEFT JOIN permet de les garder.
Points essentiels
- LEFT JOIN conserve toutes les lignes de la table de gauche.
- Si aucune correspondance n'existe, les colonnes de droite valent NULL.
- COALESCE remplace NULL par une valeur choisie, souvent 0.
- Cette logique est essentielle pour calculer des restes à payer.
- Les impayés se calculent souvent en comparant facturé et réglé.
Syntaxe type
SELECT a.colonne, COALESCE(SUM(b.montant), 0) AS total
FROM table_a a
LEFT JOIN table_b b ON a.cle = b.cle
GROUP BY a.colonne;
Exemple appliqué
SELECT f.id_facture,
f.montant_ttc - COALESCE(SUM(r.montant_regle), 0) AS reste_a_payer
FROM factures f
LEFT JOIN reglements r ON f.id_facture = r.id_facture
GROUP BY f.id_facture, f.montant_ttc;
Erreurs fréquentes
- Utiliser JOIN au lieu de LEFT JOIN pour chercher des éléments non réglés.
- Oublier COALESCE et obtenir NULL dans un calcul.
- Faire une différence entre montant_ttc et SUM sans GROUP BY.
- Filtrer trop tôt avec WHERE au lieu d'utiliser HAVING.