Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 首先从表中获取经理,然后获取员工_Oracle - Fatal编程技术网

Oracle 首先从表中获取经理,然后获取员工

Oracle 首先从表中获取经理,然后获取员工,oracle,Oracle,我有一张这样的桌子 NAME -- MANAGER 10 -- 85 85 -- 45 45 -- 52 52 -- null 我想要一个这样的输出,在层次结构中,首先是经理,然后是员工 NAME -- MANAGER 52 -- null 45 -- 52 85 -- 45 10 -- 85 有人能帮我做吗。我做了如下的内部连接,但没有工作 select * from TABLEMAIN inner join TABLEMAIN t2 ON TABLEMAIN

我有一张这样的桌子

NAME -- MANAGER
10 -- 85
85 -- 45
45 -- 52
52 -- null
我想要一个这样的输出,在层次结构中,首先是经理,然后是员工

 NAME -- MANAGER

  52 -- null

  45 -- 52

  85 -- 45

  10 -- 85
有人能帮我做吗。我做了如下的内部连接,但没有工作

select * from TABLEMAIN

 inner join TABLEMAIN t2 ON TABLEMAIN.MANAGER = t2.NAME

 order by TABLEMAIN.NAME

请帮助我找到一个解决方案

可以使用start with和connect by实现

WITH TABLEMAIN(NAME,MANAGER) AS
    (SELECT 10 ,85 FROM dual UNION ALL
    SELECT 85 , 45 FROM dual UNION ALL
    SELECT 45 ,52 FROM dual UNION ALL
    SELECT 52 ,null FROM dual )
----
-- End of data
----
SELECT * FROM TABLEMAIN
START WITH manager IS NULL
CONNECT BY PRIOR NAME = manager
输出:

NAME MANAGER
52  
45  52
85  45
10  85

您是在寻找数据的分层扫描(如第一个答案中所示),还是只想按经理ID排序?SQLFiddle似乎处于脱机状态。还是这只是我的问题?@Stijn这不是硬编码,只是数据准备,实际查询在数据行结束后开始。@San非常感谢……这正是我所需要的