PaliSkill
SQL Intermédiaire

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 :

  1. NOT IN (SELECT produit_id FROM commandes) garde les produits jamais commandés : Stylo et Biscuits.
  2. 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).
  3. OR combine 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) ou AND (intersection logique) dans un même WHERE.
  • 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