BaşlayınÜcretsiz Başlayın

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ır
Kursu Görüntüle

Egzersiz talimatları

  • Başlangıç noktası olarak 290'ın ParentID değerini ayarla.
  • CASE işleminde Parent.ID = '' ise, Parent alanı mevcut ParentID olarak ayarlanmalı.
  • CASE işleminde Parent.ID <> '' ise, her yinelemede mevcut Parent'a Parent ID eklenmeli.
  • Tanımlanan CTE'den Name ve Parent alanları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 ___;
Kodu Düzenle ve Çalıştır