Это работает на дереве, и в вашем случае дает 7 -> 5 -> 4 -> 2 -> 1 и затем останавливается.
WITH
unrolled_branch AS
(
SELECT
emp_id,
emp_name,
emp_mnager_id
FROM
yourTable
WHERE
emp_id = @emp_id
UNION ALL
SELECT
your_table.emp_id,
your_table.emp_name,
your_table.emp_mnager_id
FROM
yourTable
INNER JOIN
unrolled_branch
ON unrolled_branch.emp_manager_id = yourTable.emp_id
)
SELECT
*
FROM
unrolled_branch
Я застрял на том, как вы получаете 3 и 6, хотя.Вы просто имеете в виду, что они того же уровня, что и другие?
У вас есть это дерево ...
1-2-3-6
\
4-5-7
Но какими должны быть результаты в этом дереве?
A-B-C
/
1-2-3-6
\
4-5-7
И применяете ли вы ограничения, что у любого узла может быть только один родительский узел, а у одного узла в любом дереве не должно быть родительского узла?Или это возможно?
3 9 5-6 7 C C
/ \ / \ / / \ / \
1-2 6-8 3-4 A D-A D- (etc, etc)
\ / / \ \ / \ /
4-5-7 1-2 8 B B