我有一张表,其中两列下面定义了person和mgr的关系。如果我必须获取属于特定经理的所有人以及所有它的间接报告,那么最佳方法是什么?
另外如何针对某个级别进行具体操作,例如获取特定personid的所有用户,直到2级或n等
PERSONID REPORTTO_PERSONID
2 1
3 1
4 1
5 1
6 4
7 4
8 7
9 2
答案 0 :(得分:0)
这会递归地找到所有向personid = 2
报告的人 level
列表示与start with
条件中指定的行的相对距离。不是层次结构中的整体水平。
select *
from (
select personid,
reportto_personid,
level as lvl
from the_table
start with personid = 2
connect by prior personid = reportto_personid
) t
where lvl <= 2;
更多详情are in the manual以及本页右侧列出的所有问题。