我有一张表格如下
Id Parent_id Dept_id 666 777 D101 555 666 D201 444 555 D301 333 444 D401
我只知道价值' D401'。使用这个,我需要找到所有与co相关的id和parent_id。任何人都可以帮我构建一个查询来从表中获取值。
答案 0 :(得分:1)
你可以使用递归cte:
with recursive(id,p,d)as
(
select Id,Parent_id,Dept_id
from tbl where Dept_id='D401' --put the dept id here
union all
select t.Id,t.Parent_id,t.Dept_id
from tbl t join recursive r
on t.id=r.p
)
select * from recursive
这是DEMO
编辑:感谢a_horse_with_no_name,您也可以使用他提供的connect by
,here is the demo。
答案 1 :(得分:0)
您的要求不是很清楚。根据我的理解,你可以简单地使用;
SELECT id,parent_id
FROM tablename
WHERE dept_id =
(SELECT dept_id
FROM deptmaster_tablename
WHERE dept_name ='marketing')
答案 2 :(得分:0)
正如@a_horse_with_no_name所说,你可以使用CONNECT BY来获取oracle中的Hierarchical Query。如果你想获得所有相关的Id,你可以试试这个:
SELECT Id FROM tablename
START WITH Dept_id='D401'
CONNECT BY Id=prior Parent_id