MulaiMulai sekarang secara gratis

Dapatkan semua induk yang memungkinkan dalam satu field?

Tugas terakhir Anda di bab ini adalah menemukan semua induk yang memungkinkan mulai dari satu ID dan menggabungkan ID dari semua generasi yang ditemukan ke dalam satu field.

Untuk melakukannya, Anda akan menelusuri semua anggota secara rekursif dan menambahkan informasi ini ke satu field. Anda harus menggunakan operator CAST() untuk menggabungkan ID menjadi string. Anda akan menelusuri semua anggota keluarga mulai dari ID = 290. Secara total terdapat 300 entri pada tabel family.

Latihan ini adalah bagian dari kursus

Kueri Hierarkis dan Rekursif di SQL Server

Lihat Kursus

Petunjuk latihan

  • Tetapkan ParentID bernilai 290 sebagai titik awal.
  • Jika Parent.ID = '' dalam operasi CASE, field Parent perlu diisi dengan ParentID saat ini.
  • Jika Parent.ID <> '' dalam operasi CASE, ID induk perlu ditambahkan ke nilai Parent saat ini pada setiap iterasi.
  • Pilih Name dan Parent dari CTE yang didefinisikan.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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 ___;
Edit dan Jalankan Kode