Leçon 5 / 9 — Chapitre 2: WHERE : comparaisons et logique
Priorité de AND sur OR et parenthèses
Quand AND et OR sont combinés dans un même WHERE, AND est évalué avant OR — exactement comme la multiplication est évaluée avant l'addition en arithmétique. Sans parenthèses, cet ordre peut produire un résultat inattendu.
SELECT nom FROM produits
WHERE categorie = 'hygiene' OR categorie = 'boisson' AND prix > 500;
Ici, AND étant évalué en premier, cette requête équivaut à : categorie = 'hygiene' OR (categorie = 'boisson' AND prix > 500). Elle affiche donc tous les produits hygiene (peu importe leur prix), plus les produits boisson uniquement si leur prix dépasse 500 $.
Pour forcer un regroupement différent, des parenthèses explicites sont nécessaires :
SELECT nom FROM produits
WHERE (categorie = 'hygiene' OR categorie = 'boisson') AND prix > 500;
Cette version force le OR à être évalué en premier : elle affiche les produits qui sont (hygiene ou boisson) et, en plus, dont le prix dépasse 500 $. Seul Jus (boisson, 600 $) vérifie cette version ; Dentifrice (hygiene, 500 $ exactement) n'est plus inclus car son prix n'est pas strictement supérieur à 500 $.
Bonne pratique à retenir : dès qu'un WHERE mélange AND et OR, ajouter des parenthèses explicites, même quand elles ne changent pas le résultat — la requête reste sans ambiguïté à la lecture, pour soi-même comme pour quiconque la relira plus tard.
À retenir :
- Sans parenthèses,
ANDest évalué avantORdans une même conditionWHERE. - Des parenthèses explicites permettent de forcer un regroupement différent, et clarifient toujours la lecture.
À vous de jouer : réécrivez la deuxième requête de cette leçon en changeant le regroupement des parenthèses, et comparez le résultat obtenu.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 84 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès