Nesil sayısını bul
Bu egzersizde rastgele bir soy ağacına bakacağız. family veri kümesi üç sütundan oluşur: ID, name ve ParentID.
Görevin nesil sayısını hesaplamak. Bunu, ParentID = 101 olan kişiden başlayarak tüm nesilleri sayarak yapacaksın.
Bu görev için, kuşak hiyerarşisindeki mevcut düzeyi temsil eden özyinelemenin LEVEL değerini hesaplaman gerekiyor. Sonrasında COUNT() kullanarak LEVEL sayısını bulmalısın. Unutma, seviye sayısı nesil sayısına karşılık gelir; örneğin, 100 seviye sayısı 100 nesil bulduğun anlamına gelir.
Bu egzersiz
SQL Server'da Hiyerarşik ve Özyinelemeli Sorgular
kursunun bir parçasıdırEgzersiz talimatları
ParentIDdeğerini101yaparak özyineleme başlangıcını başlat.LEVELdeğerini mevcut özyineleme adımına ayarla.- Sabit (anchor) üyeyi, ebeveynin ve çocuğun ID’si üzerinden CTE ile birleştir.
- Nesil sayısını
COUNT()ile hesapla.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
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);