PaliSkill
← SQL Intermédiaire

Leçon 1 / 9 — Chapitre 3: Sous-requêtes

Sous-requêtes simples (dans WHERE ou SELECT)

Une sous-requête est une requête SELECT placée à l'intérieur d'une autre — entre parenthèses —, dans une clause WHERE ou SELECT.

Sous-requête avec IN, pour tester l'appartenance à un ensemble de valeurs :

SELECT nom FROM produits
WHERE id IN (SELECT produit_id FROM commandes);

La sous-requête (SELECT produit_id FROM commandes) renvoie l'ensemble des produit_id présents dans commandes : 1, 1, 3, 4, 6. WHERE id IN (...) garde les produits dont l'id figure dans cet ensemble — Cahier, Savon, Jus, Dentifrice. Contrairement à une jointure, chaque produit n'apparaît qu'une seule fois, même si son id figure plusieurs fois dans la sous-requête (Cahier, malgré ses deux commandes) : IN teste une appartenance, il ne multiplie pas les lignes.

Sous-requête scalaire, qui renvoie une seule valeur, utilisable dans une comparaison :

SELECT nom FROM produits
WHERE prix > (SELECT AVG(prix) FROM produits);

(SELECT AVG(prix) FROM produits) renvoie une seule valeur (400) ; la requête garde alors les produits dont le prix dépasse cette moyenne.

À retenir :

  • Une sous-requête est un SELECT placé entre parenthèses à l'intérieur d'une autre requête.
  • WHERE colonne IN (sous-requête) garde les lignes dont la colonne figure dans l'ensemble de valeurs renvoyé — sans dupliquer les lignes, contrairement à une jointure.
  • Une sous-requête qui renvoie une seule valeur (comme un AVG, COUNT, MAX...) peut être comparée directement avec =, >, <...

À vous de jouer : comparez le nombre de lignes renvoyées par la jointure INNER JOIN du chapitre précédent et par cette sous-requête IN — même lien logique, résultat différent.

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que l'attestation finale.

7 500 XOF / 11,43 € / 12,46 $

Débloquez les 87 leçons restantes de ce module

Pour vous communiquer où envoyer le paiement.

Moyen de paiement souhaité

Nous vous contactons pour le paiement — activé dès réception.