Tüm olası ebeveynleri tek bir alanda topla
Bu bölümdeki son görevin, tek bir ID'den başlayarak tüm olası ebeveynleri bulmak ve bulunan tüm kuşakların ID'lerini tek bir alanda birleştirmek.
Bunu yapmak için, tüm olası üyeleri özyinelemeli olarak arayacak ve bu bilgiyi tek bir alana ekleyeceksin. IDleri bir metin olarak birleştirmek için CAST() işleçini kullanman gerekiyor.
Aramayı ID = 290'dan başlayarak tüm aile üyeleri için yapacaksın. family tablosunda toplam 300 kayıt var.
Bu egzersiz
SQL Server'da Hiyerarşik ve Özyinelemeli Sorgular
kursunun bir parçasıdırEgzersiz talimatları
- Başlangıç noktası olarak 290'ın
ParentIDdeğerini ayarla. CASEişlemindeParent.ID = ''ise,Parentalanı mevcutParentIDolarak ayarlanmalı.CASEişlemindeParent.ID <> ''ise, her yinelemede mevcut Parent'a Parent ID eklenmeli.- Tanımlanan CTE'den
NameveParentalanlarını seç.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
WITH tree AS (
SELECT
ID,
Name,
ParentID,
CAST('0' AS VARCHAR(MAX)) as Parent
FROM family
-- Initialize the ParentID to 290
WHERE ___ = ___
UNION ALL
SELECT
Next.ID,
Next.Name,
Parent.ID,
CAST(CASE WHEN Parent.ID = ''
-- Set the Parent field to the current ParentID
THEN(CAST(Next.___ AS VARCHAR(MAX)))
-- Add the ParentID to the current Parent in each iteration
ELSE(Parent.Parent + ' -> ' + CAST(Next.___ AS VARCHAR(MAX)))
END AS VARCHAR(MAX))
FROM family AS Next
INNER JOIN tree AS Parent
ON Next.ParentID = Parent.ID)
-- Select the Name, Parent from tree
SELECT ___, ___
FROM ___;