2015-12-03 160 views
0

我有一个表有许多项目的ID,并为每一个项目,我有层次结构如下所示。层次查询 - 甲骨文

enter image description here

我输入我的风险id..How可以得到输入风险ID顶层父。

如果我给25作为输入,我应该得到23 output.how我能做到这一点。

+0

你能告诉我们你试过了什么吗?另外,作为提示,查找CTE(公用表表达式)。 –

+1

这个herarchy是如何定义的?什么是link1和link2? – miracle173

回答

0

从所需行开始上升到根:

SELECT RiskID, 
FROM PROJECT_RISKS 
WHERE CONNECT_BY_ISLEAF = 1 
START WITH 
     RiskID = 25 
CONNECT BY 
     PRIOR Link2 = Link1 
AND PRIOR ProjectID = ProjectID; 

从根开始并下降到所需的行:

SELECT CONNECT_BY_ROOT(RiskID) AS RiskID 
FROM Project_Risks 
WHERE RiskID = 25 
START WITH 
     link2  IS NULL 
CONNECT BY 
     PRIOR Link1 = Link2 
AND PRIOR ProjectID = ProjectID; 

两者都会给出相同的答案。