在oracle中显示父子层次结构
Display parent child hierarchy in oracle
我有一个像下面这样的 Oracle table
EMPNO EMPNAME MANAGERID
1 EMP1
2 EMP2 1
3 EMP3 2
通过使用上面的 table,我想显示员工经理层次结构,如下所示,
EMPNO EMPNAME EMPHIERARCHY (Contains EMP name and Manager Name(Managers Manager as well))
1 EMP1
2 EMP2 EMP2,EMP1
3 EMP3 EMP3,EMP2,EMP1
谁能指导我如何在 Oracle 中实现这一点?
对于 "standard" 层次结构,您需要此查询:
select empno, empname, sys_connect_by_path(empname, '/') hierarchy
from test connect by managerid = prior empno start with managerid is null
输出:
EMPNO EMPNAME HIERARCHY
----------- ---------- ----------------
1 EMP1 /EMP1
2 EMP2 /EMP1/EMP2
3 EMP3 /EMP1/EMP2/EMP3
对于层次结构 "inverted" 此查询有效:
select root1 empno, root2 empname, hierarchy from (
select empno, empname, managerid, prior empname,
sys_connect_by_path(empname, '/') hierarchy, connect_by_isleaf leaf,
connect_by_root(empno) root1, connect_by_root(empname) root2
from test connect by prior managerid = empno
) where leaf = 1
输出:
EMPNO EMPNAME HIERARCHY
---------- ---------- ----------------
1 EMP1 /EMP1
2 EMP2 /EMP2/EMP1
3 EMP3 /EMP3/EMP2/EMP1
更多关于 hierarchical queries。
我有一个像下面这样的 Oracle table
EMPNO EMPNAME MANAGERID
1 EMP1
2 EMP2 1
3 EMP3 2
通过使用上面的 table,我想显示员工经理层次结构,如下所示,
EMPNO EMPNAME EMPHIERARCHY (Contains EMP name and Manager Name(Managers Manager as well))
1 EMP1
2 EMP2 EMP2,EMP1
3 EMP3 EMP3,EMP2,EMP1
谁能指导我如何在 Oracle 中实现这一点?
对于 "standard" 层次结构,您需要此查询:
select empno, empname, sys_connect_by_path(empname, '/') hierarchy
from test connect by managerid = prior empno start with managerid is null
输出:
EMPNO EMPNAME HIERARCHY
----------- ---------- ----------------
1 EMP1 /EMP1
2 EMP2 /EMP1/EMP2
3 EMP3 /EMP1/EMP2/EMP3
对于层次结构 "inverted" 此查询有效:
select root1 empno, root2 empname, hierarchy from (
select empno, empname, managerid, prior empname,
sys_connect_by_path(empname, '/') hierarchy, connect_by_isleaf leaf,
connect_by_root(empno) root1, connect_by_root(empname) root2
from test connect by prior managerid = empno
) where leaf = 1
输出:
EMPNO EMPNAME HIERARCHY
---------- ---------- ----------------
1 EMP1 /EMP1
2 EMP2 /EMP2/EMP1
3 EMP3 /EMP3/EMP2/EMP1
更多关于 hierarchical queries。