mrbebert a écrit :
Le LEFT JOIN est un peu différent d'une jointure normale.
Dans une jointure, tu gardes uniquement les lignes qui "correspondent", alors qu'avec le LEFT JOIN, tu gardes quand même la ligne de gauche s'il n'y a pas d'équivalent (dans ce cas, les champs correspondants sont mis à NULL pour la table de droite).
La requête peut donc se lire de la façon suivante :
- pour chaque ligne de "village", y rattacher la/les ligne(s) qui correspondent (avec la condition guerre.villageattaquer=village.village)
- conserver seulement les lignes qui n'ont pas trouvé leur correspondant dans "guerre"
Dis autrement :
- rattacher à chaque "village" la "guerre" qui les a attaqué
- garder seulement les villages qui n'en ont pas
Essaie de comparer les requêtes suivantes :
SELECT * FROM village LEFT JOIN guerre ON guerre.villageattaquer = village.village SELECT * FROM village, guerre
WHERE guerre.villageattaquer = village.village
|