Combiner plusieurs conditions
Objectif : Construire des filtres qui exigent ou acceptent plusieurs critères à l’aide de AND, OR et de parenthèses.
Une demande de recherche comporte souvent plusieurs critères : trouver des œuvres récentes d’un type donné, ou des adhérents qui répondent à l’une de plusieurs conditions. Sans combiner correctement ces critères, vous risquez d’obtenir trop de lignes ou d’écarter des résultats attendus. Vous allez construire des conditions lisibles avec AND, OR et des parenthèses.
Exiger plusieurs critères avec AND
Vous connaissez déjà WHERE et les comparaisons simples : cette leçon s’appuie sur ces notions sans les reprendre. AND relie deux conditions qui doivent être vraies toutes les deux pour qu’une ligne soit retenue. Par exemple, pour afficher les œuvres de type « Livre » parues à partir de 2000, il faut que le type corresponde et que l’année respecte le seuil.
-- Œuvres de type Livre parues à partir de 2000
SELECT titre, type_oeuvre, annee_parution
FROM oeuvres
WHERE type_oeuvre = 'Livre'
AND annee_parution >= 2000;Le résultat contient uniquement les lignes de oeuvres dont type_oeuvre vaut « Livre » et dont annee_parution est supérieure ou égale à 2000.Chaque condition est écrite séparément, puis AND indique que vous exigez leur réunion. Une œuvre qui remplit seulement le critère de type, ou seulement celui d’année, ne sera pas affichée. Cette distinction est utile lorsque votre demande contient des formulations comme « à la fois », « et » ou « répondant aux deux critères ».
Accepter plusieurs possibilités avec OR
OR permet de retenir une ligne si au moins l’une des conditions reliées est vraie. Pour rechercher des œuvres de type « Livre » ou « DVD », vous pouvez comparer la même colonne à chacune des deux valeurs. Une œuvre n’a pas besoin de satisfaire les deux comparaisons : une seule suffit.
-- Œuvres de type Livre ou DVD
SELECT titre, type_oeuvre, annee_parution
FROM oeuvres
WHERE type_oeuvre = 'Livre'
OR type_oeuvre = 'DVD';Le résultat contient les œuvres de type « Livre » et celles de type « DVD ». Les autres types ne sont pas retenus.Les deux comparaisons portent ici sur type_oeuvre, mais chacune teste une valeur différente. Vous pouvez ainsi traduire une demande qui énumère des possibilités, par exemple « Livre ou DVD ». Si vous ajoutez ensuite un autre critère, vérifiez la portée de ce critère : c’est là que les parenthèses deviennent importantes.
Grouper les possibilités avec des parenthèses
La demande peut être plus précise : afficher les œuvres récentes qui sont soit des livres, soit des DVD. Vous combinez alors un groupe de possibilités avec un critère obligatoire. Les parenthèses signalent que l’alternative « Livre ou DVD » doit être évaluée comme un ensemble avant d’être combinée avec l’année.
-- Œuvres récentes de type Livre ou DVD
SELECT titre, type_oeuvre, annee_parution
FROM oeuvres
WHERE (type_oeuvre = 'Livre'
OR type_oeuvre = 'DVD')
AND annee_parution >= 2000;Le résultat contient les œuvres parues à partir de 2000 dont le type est « Livre » ou « DVD ». Les œuvres plus anciennes et celles d’un autre type sont exclues.Dans cette requête, l’année doit être suffisante dans les deux cas : elle s’applique aux livres comme aux DVD. Sans les parenthèses, AND est prioritaire sur OR en SQL. La condition serait alors interprétée comme « type Livre » ou « type DVD et année à partir de 2000 » : tous les livres, même anciens, pourraient apparaître. Les parenthèses rendent donc votre intention explicite et évitent une erreur de filtrage.
Ajouter les requêtes au fichier du projet
Ajoutez les trois requêtes de cette leçon à la suite des requêtes déjà présentes dans requetes.sql, sans supprimer celles des leçons précédentes. Chaque requête se termine par un point-virgule et son commentaire décrit la question traitée. Vous pouvez exécuter chaque bloc séparément dans votre client MariaDB 11, puis comparer les lignes obtenues à la condition formulée.
À retenir
ANDexige que toutes les conditions reliées soient vraies.ORaccepte une ligne dès qu’au moins une condition reliée est vraie.- Utilisez des parenthèses pour grouper les alternatives avant de les combiner à un critère obligatoire.
- Relisez la condition en français et vérifiez que chaque résultat attendu la respecte.
Dans la prochaine leçon, vous rechercherez des motifs dans les textes avec LIKE et ses jokers.