Dengan asumsi Anda ingin mendapatkan saudara dari nilai @p0
, Anda dapat menggunakan self-join sederhana:
SELECT p.Child
FROM Table1 c
INNER JOIN Table1 p ON c.Parent = p.Parent
WHERE c.Child = @p0
AND p.Child <> @p0
Klausa tidak sama di sini memastikan Anda mendapatkan saudara kandung yang tidak menyertakan nilai yang Anda cari. Hapus jika perlu.
Karena Anda menyebutkan rekursi, mungkin Anda menginginkan seluruh pohon mulai dari induk nilai @p0
. Dalam hal ini, Anda dapat menggunakan CTE rekursif:
WITH parent AS (
SELECT Parent
FROM Table1
WHERE Child = @p0
), tree AS (
SELECT x.Parent, x.Child
FROM Table1 x
INNER JOIN parent ON x.Parent = parent.Parent
UNION ALL
SELECT y.Parent, y.Child
FROM Table1 y
INNER JOIN tree t ON y.Parent = t.Child
)
SELECT Parent, Child
FROM tree
Contoh SQL Fiddle menggunakan data Anda dandengan data tambahan untuk mendemonstrasikan CTE rekursif