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非常感谢……这正是我所需要的