Forudsat at du ønsker at få søskende af værdien @p0
, kan du bruge en simpel selv-deltagelse:
SELECT p.Child
FROM Table1 c
INNER JOIN Table1 p ON c.Parent = p.Parent
WHERE c.Child = @p0
AND p.Child <> @p0
Ikke-lige klausulen her sørger for, at du får søskende uden den værdi, du søgte efter. Fjern det efter behov.
Men eftersom du nævner rekursion, vil du måske have hele træet startende ved overordnet af værdien @p0
. I så fald kan du bruge en rekursiv CTE:
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
SQL Fiddle eksempler brug af dine data ogmed yderligere data for at demonstrere den rekursive CTE