CommencerCommencez gratuitement

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>
Voir le cours

Instructions de l’exercice

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