PaliSkill
SQL avancé

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 JOIN par 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