Supponendo che tu voglia avere fratelli del valore @p0
, puoi utilizzare un semplice 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
La clausola di non parità qui ti assicura che i fratelli non includano il valore che hai cercato. Rimuovilo se necessario.
Dato che hai menzionato la ricorsione, forse vuoi l'intero albero a partire dal genitore del valore @p0
. In tal caso, puoi utilizzare un CTE ricorsivo:
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
Esempi di SQL Fiddle utilizzando i tuoi dati econ dati aggiuntivi per dimostrare il CTE ricorsivo