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 parHAVING.
À 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