Leçon 9 / 9 — Chapitre 3: Sous-requêtes
Cas pratique : sous-requêtes combinées
Ce cas pratique combine deux sous-requêtes indépendantes avec un OR — les notions de ce chapitre.
SELECT p.nom, p.prix
FROM produits p
WHERE p.id NOT IN (SELECT produit_id FROM commandes)
OR p.prix > (SELECT AVG(prix) FROM produits);
Étape par étape :
NOT IN (SELECT produit_id FROM commandes)garde les produits jamais commandés : Stylo et Biscuits.prix > (SELECT AVG(prix) FROM produits)garde les produits dont le prix dépasse la moyenne générale (400) : Cahier (500), Jus (600), Dentifrice (500).ORcombine les deux ensembles sans doublon : un produit qui remplirait les deux conditions à la fois n'apparaîtrait qu'une fois.
Les deux ensembles ne se recoupent pas ici : {Stylo, Biscuits} ∪ {Cahier, Jus, Dentifrice} = 5 produits distincts sur les 6 de la table. Seul Savon est exclu : il a bien été commandé (condition 1 fausse) et son prix (300) reste sous la moyenne (condition 2 fausse).
Résultat final : 5 lignes — tous les produits sauf Savon.
À retenir :
- Deux sous-requêtes indépendantes peuvent se combiner avec
OR(union logique) ouAND(intersection logique) dans un mêmeWHERE. - Avec
OR, un produit qui remplirait les deux conditions n'apparaît qu'une seule fois — le résultat reste un ensemble de lignes, jamais un doublon logique. - Identifier ce qui est exclu (ici, la seule ligne Savon) est souvent plus rapide que de recompter chaque condition en détail.
À vous de jouer : remplacez le OR par un AND dans cette requête, et déterminez combien de lignes (probablement aucune) le résultat contiendrait alors.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 80 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès