Analyser l'arbre généalogique

Requêtes hiérarchiques et récursives dans SQL Server

Jasmin Ludolf

Content Developer

L'arbre généalogique

Le familyTree est décrit par :

  • ID de la personne
  • Name de la personne
  • parentID : l'ID du parent

Éléments décrivant la hiérarchie :

  • ID
  • parentID

Image d'un arbre généalogique

Requêtes hiérarchiques et récursives dans SQL Server

Mettre le tout ensemble

Retenez ces principes pour les CTE récursives :

  • Initialiser la récursion dans l'ancre
  • Implémenter la fonction récursive dans le membre récursif
  • Définir une condition d'arrêt

Règles de fonctionnement :

  • Récupérer le niveau de récursion
  • Regrouper la fonction récursive dans un seul champ
Requêtes hiérarchiques et récursives dans SQL Server

Questions sur l'arbre généalogique

Obtenir le nombre de générations

  • Définir le LEVEL

    -- Anchor member
    0 as LEVEL
    -- Recursive member
    LEVEL + 1
    
  • Compter le nombre de niveaux pour obtenir les générations : COUNT(LEVEL)

Generations:
100
Requêtes hiérarchiques et récursives dans SQL Server

Questions sur l'arbre généalogique

Rassembler tous les parents possibles dans un champ

  • Combiner les résultats récursifs dans un seul champ
    -- Anchor member
    CAST(ID AS VARCHAR(MAX)) as Parent
    -- Recursive member
    Parent + ' -> ' + CAST(parentID AS VARCHAR(MAX))
    
+---------------------------------------------+
| Name            | Parent                    |
|-----------------|---------------------------|
|Dominik Egarter  | 100 -> 101 -> 102 ->103   |
+---------------------------------------------+
Requêtes hiérarchiques et récursives dans SQL Server

Vérifions l'arbre généalogique !

Requêtes hiérarchiques et récursives dans SQL Server

Preparing Video For Download...