PaliSkill
SQL Intermédiaire

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

Sous-requête dans FROM : une table dérivée

Une sous-requête peut aussi apparaître dans la clause FROM, à la place d'une table : on l'appelle alors une table dérivée. Elle doit obligatoirement porter un alias — sans lui, la requête échoue.

SELECT categorie, total_quantite
FROM (
  SELECT p.categorie, SUM(c.quantite) AS total_quantite
  FROM produits p
  JOIN commandes c ON p.id = c.produit_id
  GROUP BY p.categorie
) AS totaux_categorie
WHERE total_quantite >= 5;

La sous-requête interne (déjà vue au chapitre précédent) calcule un total par catégorie : papeterie = 5, hygiène = 9, boisson = 1. La requête externe traite ce résultat comme une table ordinaire, nommée totaux_categorie, et y applique un WHERE classique : total_quantite >= 5 garde papeterie et hygiène, exclut boisson.

Résultat final : 2 lignes.

À retenir :

  • Une sous-requête en FROM (table dérivée) doit toujours porter un alias (AS totaux_categorie) — c'est une erreur de syntaxe de l'omettre.
  • La requête externe peut filtrer, trier ou re-agréger le résultat de la sous-requête comme s'il s'agissait d'une table normale.
  • Cette technique permet de filtrer sur le résultat d'une agrégation (comme total_quantite) sans passer par HAVING.

À vous de jouer : réécrivez cette même requête avec HAVING SUM(c.quantite) >= 5 directement sur la requête d'origine, sans sous-requête en FROM, et vérifiez que le résultat est identique.

🔒

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