Exercice 47 / 60

Requête récursive

ConsigneSur la table employes (colonnes id, nom, manager_id), génère la hiérarchie avec WITH RECURSIVE : démarre par les employés sans manager (manager_id IS NULL, niveau 0), puis descend d'un niveau à chaque étape. Colonnes : id, nom, manager_id, niveau.

📖 Cours

Une requête récursive (with recursive) s'appelle elle-même pour parcourir des hiérarchies (arborescence de categories, organigramme).

Structure

WITH RECURSIVE cte AS ( SELECT ... (cas de départ) UNION ALL SELECT ... FROM table JOIN cte ... (étape répétée))
WITH RECURSIVE part des racines (le cas de départ, exécuté une seule fois) puis rejoue la même étape : joindre les enfants du dernier niveau obtenu, jusqu'à ce qu'il n'en sorte plus aucun
WITH RECURSIVE part des racines (le cas de départ, exécuté une seule fois) puis rejoue la même étape : joindre les enfants du dernier niveau obtenu, jusqu'à ce qu'il n'en sorte plus aucun

Exemple (table categories, hiérarchie parent/enfant) :

WITH RECURSIVE arbre AS ( SELECT id, nom, parent_id, 0 AS niveau FROM categories WHERE parent_id IS NULL UNION ALL SELECT c.id, c.nom, c.parent_id, a.niveau + 1 FROM categories c JOIN arbre a ON c.parent_id = a.id)SELECT * FROM arbre;-> chaque categorie avec sa profondeur dans l'arborescence

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →