Obtenir le nombre de générations ?
Dans cet exercice, nous allons examiner un arbre généalogique aléatoire. Le jeu de données family comporte trois colonnes : ID, name et ParentID.
Votre objectif est de calculer le nombre de générations. Pour cela, vous compterez toutes les générations en partant de la personne dont le ParentID = 101.
Pour cette tâche, vous devez calculer le LEVEL de la récursion, qui représente le niveau actuel dans la hiérarchie des générations. Ensuite, vous devez compter le nombre de LEVEL à l’aide de COUNT(). Rappelez-vous que le nombre de niveaux correspond au nombre de générations ; par exemple, un nombre de niveaux de 100 signifie que vous avez identifié 100 générations.
Cet exercice fait partie du cours
<cours>Requêtes hiérarchiques et récursives dans SQL Server</cours>Instructions de l’exercice
- Initialisez le point de départ de la récursion en fixant le
ParentIDà101. - Affectez à
LEVELl’étape de récursion en cours. - Joignez le membre d’ancrage à la CTE sur l’ID du parent et de l’enfant.
- Utilisez
COUNT()pour obtenir le nombre de générations.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
WITH children AS (
SELECT
ID,
Name,
ParentID,
0 as LEVEL
FROM family
-- Set the targeted parent as recursion start
WHERE ___ = ___
UNION ALL
SELECT
child.ID,
child.NAME,
child.ParentID,
-- Increment LEVEL by 1 each step
___ + ___
FROM family child
INNER JOIN children
-- Join the anchor query with the CTE
ON child.___ = children.___)
SELECT
-- Count the number of generations
___(___) as Generations
FROM children
OPTION(MAXRECURSION 300);