兄弟を取得したい場合 値の@p0
、簡単な自己参加を使用できます:
SELECT p.Child
FROM Table1 c
INNER JOIN Table1 p ON c.Parent = p.Parent
WHERE c.Child = @p0
AND p.Child <> @p0
ここでのnot-equal句は、検索した値を含まない兄弟を確実に取得します。必要に応じて削除してください。
ただし、再帰について言及しているので、おそらくツリー全体が必要です。 値@p0
の親から開始 。この場合、再帰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
SQLFiddleの例