Angenommen, Sie möchten Geschwister bekommen des Wertes @p0
, können Sie einen einfachen Self-Join verwenden:
SELECT p.Child
FROM Table1 c
INNER JOIN Table1 p ON c.Parent = p.Parent
WHERE c.Child = @p0
AND p.Child <> @p0
Die ungleiche Klausel hier stellt sicher, dass Sie Geschwister erhalten, die nicht den gesuchten Wert enthalten. Entfernen Sie es bei Bedarf.
Da Sie jedoch Rekursion erwähnen, möchten Sie vielleicht den gesamten Baum beginnend beim Elternteil des Werts @p0
. In diesem Fall können Sie einen rekursiven CTE verwenden:
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-Beispiele unter Verwendung Ihrer Daten und mit zusätzlichen Daten zur Demonstration des rekursiven CTE