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
Petunjuk latihan
- Tetapkan
ParentIDbernilai 290 sebagai titik awal. - Jika
Parent.ID = ''dalam operasiCASE, fieldParentperlu diisi denganParentIDsaat ini. - Jika
Parent.ID <> ''dalam operasiCASE, ID induk perlu ditambahkan ke nilaiParentsaat ini pada setiap iterasi. - Pilih
NamedanParentdari 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 ___;