Obtenir le nombre de générations?
Dans cet exercice, nous allons examiner un arbre généalogique aléatoire. L'ensemble de données family comporte trois colonnes : ID, name et ParentID.
Votre tâche est de calculer le nombre de générations. Vous le ferez en comptant toutes les générations à partir de la personne avec 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 trouvé 100 générations.
Cette activité fait partie du cours
Requêtes hiérarchiques et récursives dans SQL Server
Instructions de l’exercice
- Initialisez le point de départ de la récursion en définissant
ParentIDà101. - Définissez
LEVELau numéro de l'étape de récursion actuelle. - Faites un JOIN entre le membre d'ancrage et 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);