Quelle est la différence entre un INNER JOIN et un LEFT JOIN ?
Réponse
Un INNER JOIN ne renvoie que les lignes pour lesquelles il existe une correspondance dans les deux tables jointes : si une ligne de la table de gauche n'a pas de correspondance dans la table de droite, elle est exclue du résultat. Un LEFT JOIN conserve toutes les lignes de la table de gauche, même sans correspondance dans la table de droite, en remplissant les colonnes de droite avec NULL dans ce cas. Le LEFT JOIN est donc utile quand on veut par exemple lister tous les clients, y compris ceux qui n'ont encore jamais passé de commande.
Piège classique
Le piège classique est d'ajouter une condition sur une colonne de la table de droite dans la clause WHERE plutôt que dans la clause ON d'un LEFT JOIN : ça filtre les lignes après la jointure et transforme silencieusement le LEFT JOIN en comportement équivalent à un INNER JOIN.