PaliSkill
SQL avancé

Leçon 4 / 9 — Chapitre 7: CTE récursive et structures avancées

Calculer un niveau de profondeur

La colonne niveau, calculée par la CTE récursive (h.niveau + 1 à chaque tour), sert souvent à afficher une hiérarchie de façon lisible — par exemple en l'indentant, comme un sommaire.

WITH RECURSIVE hierarchie 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, h.niveau + 1
  FROM categories c
  JOIN hierarchie h ON c.parent_id = h.id
)
SELECT LPAD('', niveau * 2, ' ') || nom AS nom_indente
FROM hierarchie;

LPAD('', niveau * 2, ' ') (vue au chapitre 1) génère un nombre d'espaces proportionnel au niveau : 0 espace au niveau 0, 2 au niveau 1, 4 au niveau 2. Pour 'Ordinateurs portables' (niveau 2) : 4 espaces, puis le nom — ' Ordinateurs portables'.

À retenir :

  • Le niveau calculé par une CTE récursive peut alimenter n'importe quel affichage dépendant de la profondeur, pas seulement un simple compteur.
  • Combiner LPAD et le niveau reproduit une indentation visuelle de hiérarchie, comme un sommaire ou une arborescence de fichiers.

À vous de jouer : combien d'espaces LPAD('', niveau * 2, ' ') produit-il pour une catégorie de niveau 1 ?

🔒

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