Aan de slagGa gratis aan de slag

Het aantal generaties bepalen

In deze oefening bekijken we een willelijke stamboom. De gegevensset family bestaat uit drie kolommen: ID, name en ParentID. Jouw taak is om het aantal generaties te berekenen. Dat doe je door alle generaties te tellen vanaf de persoon met ParentID = 101.

Voor deze taak moet je de LEVEL van de recursie berekenen, die het huidige niveau in de generatiestructuur weergeeft. Daarna tel je het aantal LEVELs met COUNT(). Onthoud dat de telling van het niveau gelijkstaat aan het aantal generaties; een levelteling van 100 betekent bijvoorbeeld dat je 100 generaties hebt gevonden.

Deze oefening maakt deel uit van de cursus

Hiërarchische en recursieve queries in SQL Server

Cursus bekijken

Oefeninstructies

  • Start de recursie door ParentID in te stellen op 101.
  • Zet LEVEL op de huidige recursiestap.
  • Join het anchor-gedeelte met de CTE op de ID van de ouder en het kind.
  • Gebruik COUNT() om het aantal generaties te tellen.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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);
Code bewerken en uitvoeren