Exercice 47 / 60

Requête récursive

Sur 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.

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 puis se rappelle elle-même, en joignant à chaque tour les enfants du niveau précédent

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
employes
idnomdepartementsalairemanager_iddate_embauche
query.sql

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