Quelle population devez-vous conserver ?
INNER JOIN retourne uniquement les lignes possédant une correspondance. LEFT JOIN conserve toutes les lignes de la table gauche et complète les colonnes absentes avec NULL.
Pour trouver les clients sans commande, clients doit être à gauche. Pour analyser uniquement les commandes reliées à un client valide, INNER JOIN exprime mieux le besoin.
La requête expliquée
Commencez par définir ce que doit représenter une ligne du résultat. Cette décision détermine les colonnes, les regroupements et les contrôles nécessaires.
L’exemple suivant isole le mécanisme principal. Exécutez-le, observez le résultat, puis modifiez une seule clause à la fois pour comprendre son effet.
SELECT c.nom, COUNT(co.id_commande) AS commandes
FROM clients c
LEFT JOIN commandes co ON co.id_client = c.id_client
GROUP BY c.id_client, c.nom;Lire le résultat comme un analyste
COUNT porte sur l’identifiant de commande nullable, pas sur *. Un client sans correspondance obtient ainsi zéro.
Un filtre sur commandes placé dans WHERE pourrait supprimer les lignes NULL et annuler l’effet du LEFT JOIN ; placez-le dans ON si la population gauche doit rester complète.
- Nommer la population de référence.
- Prévoir les lignes sans correspondance.
- Compter une colonne du côté droit.
- Contrôler les filtres placés dans ON ou WHERE.
Les erreurs qui faussent l’analyse
Une requête peut être valide sans répondre correctement à la question. Les erreurs les plus coûteuses sont souvent silencieuses : mauvais périmètre, ligne multipliée ou valeur absente interprétée comme zéro.
Avant de partager le résultat, confrontez-le à un petit échantillon calculé à la main et conservez la définition du périmètre avec la requête.
- Choisir INNER JOIN par habitude.
- Placer un filtre droit dans WHERE après LEFT JOIN.
- Compter * et afficher 1 pour une absence.
- Regrouper uniquement par nom et fusionner des homonymes.
Passez à la pratique
Faites l’exercice clients sans commande et réécrivez-le ensuite avec NOT EXISTS.
Le simulateur SQL de SQL.tn exécute uniquement des requêtes de lecture sur des données fictives dans votre navigateur. Vous pouvez essayer plusieurs écritures et comparer leur résultat sans installer de logiciel.
Mettez ce guide en pratique.
Ouvrez l’exercice associé, exécutez votre requête et comparez le résultat attendu.
