Angenommen, Sie Geschwister des Wertes @p0
erhalten möchten, können Sie eine einfache verwenden Self-Join:
SELECT p.Child
FROM Table1 c
INNER JOIN Table1 p ON c.Parent = p.Parent
WHERE c.Child = @p0
AND p.Child <> @p0
Der Ungleich-Klausel hier stellt sicher, dass Sie bekommen Geschwister nicht einschließlich der Wert, nach dem Sie gesucht haben. Entfernen Sie es wie nötig.
SQL Fiddle example
Da Sie aber Rekursion erwähnen, vielleicht wollen Sie den gesamten Baum@p0
des Wertes der Mutter beginnen. In diesem Fall können Sie eine rekursive 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 using your data und with additional data to demonstrate the recursive CTE
Eine kleine Erklärung mit dem Code ist immer nett. –