CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Initialisez le point de départ de la récursion en définissant ParentID à 101.
  • Définissez LEVEL au 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);
Modifier et exécuter le code