对于以下表格先决条件的示例:
**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级可以是任何级别。 我怎样才能做到这一点? 提前谢谢。
答案 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);