Leçon 3 / 9 — Chapitre 7: CTE récursive et structures avancées
Cas d'usage : retrouver tous les descendants d'une catégorie
En partant d'une seule catégorie (plutôt que de toutes les racines), une CTE récursive retrouve tous ses descendants, à n'importe quelle profondeur.
WITH RECURSIVE descendants AS (
SELECT id, nom, parent_id
FROM categories WHERE id = 1
UNION ALL
SELECT c.id, c.nom, c.parent_id
FROM categories c
JOIN descendants d ON c.parent_id = d.id
)
SELECT * FROM descendants;
Le terme d'ancrage démarre uniquement sur la catégorie 1 (Électronique), plutôt que sur toutes les racines. La récursion ajoute ensuite ses enfants directs (2, 4), puis l'enfant de ces enfants (3, enfant de 2). Résultat : 4 lignes — 1, 2, 4 et 3. 'Vêtements homme' (id 6), qui descend de la catégorie 5, n'apparaît jamais : il n'a aucun lien avec la catégorie 1.
À retenir :
- Le terme d'ancrage détermine le point de départ de la récursion — restreindre à une seule ligne isole les descendants de cette seule branche.
- Cette technique retrouve tous les descendants d'un nœud, quelle que soit leur profondeur, sans écrire un
JOINpar niveau.
À vous de jouer : le nom 'Vêtements homme' apparaît-il dans ce résultat ? Justifiez à partir de sa position dans la hiérarchie.
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