如何在oracle中使用先前连接获取必备课程?

时间:2014-12-05 02:51:36

标签: oracle

对于以下表格先决条件的示例:

**DEPT**  **COURSE** **PRE_DEPT** **PRE_COURSE**
   CS        532       CS             432
   CS        432       CS             332
   CS        552       CS             562
   CS        332       CS             232

现在我想找到课程532的先决条件,我应该得到432(direct prerequiste) 332和232(间接先决条件)。注意:这里它的3级可以是任何级别。 我怎样才能做到这一点? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

你可以尝试这个演示代码来获得你想要的输出,记住它在oracle中: -

create table tdxd
(dept varchar2(4),course number,pre_dept varchar2(4),pre_course   number);

insert all 
into tdxd values ('CS',532,'CS',432)
into tdxd values  ('CS',432,'CS',332)
into tdxd values('CS',552,'CS',562)
into tdxd values('CS',332,'CS',232)
select * from dual;    

commit;

select course,pre_course,direct_prerequisite,
substr(indirect_prerequisite,instr(indirect_prerequisite,'>')+1)
dirct_to_indirct_prerequisite
from(
select  course,pre_course,connect_by_root pre_course direct_prerequisite,
sys_connect_by_path(pre_course,'>') as  indirect_prerequisite
from    tdxd
start   with course = 532
connect by prior pre_course = course);