SQL Query用于检索表中的co相关值

时间:2015-04-07 10:26:03

标签: sql oracle

我有一张表格如下

Id     Parent_id      Dept_id
666      777           D101
555      666           D201
444      555           D301
333      444           D401

我只知道价值' D401'。使用这个,我需要找到所有与co相关的id和parent_id。任何人都可以帮我构建一个查询来从表中获取值。

3 个答案:

答案 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 byhere 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