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, kursun bir parçasıdır
SQL Server'da Hiyerarşik ve Özyinelemeli Sorgular
Egzersiz 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ı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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 ___;