• Finally i came up with

    SELECT DISTINCT Parent

    FROM @T WHERE Child = @Id OR Parent = @Id

    UNION

    SELECT DISTINCT B.Child

    FROM @t A INNER JOIN @t B

    ON A.Parent = B.Parent

    WHERE A.Child = @Id OR A.Parent = @Id

    any other suggestions.