这个问题与我之前的问题有一些关系: Oracle SQL Connect By Logic
表:
getPosts { result in
switch result {
case .success(let json): print(json)
// process json
case .failure(let error): print(error)
// handle error
}
}
数据:
create table temp (emp_id varchar2(3), manager_id varchar2(3))
我想创建一个查询,使用connect by上链来查找父 - 父记录,而不是获取子记录。
解决方案:
E10 E20
E20 E50
E30 E50
E40 E40
E50 E90
E90 E90
但是根据我的要求,我需要取出所有的父母和上述查询在E90停止。 [可能是因为NOCYCLE作为emp&经理在E90处是一样的。
查询输出:
Select EMP_ID
from temp
Start with EMP_ID = 'E20'
Connect by NOCYCLE EMP_ID = Prior MANAGER_ID
order by EMP_ID
必需输出:
E20
E50
请告知。
答案 0 :(得分:2)
似乎周期就是问题。
通过在CONNECT BY子句中使用PRIOR运算符查看列来检测循环。
要打破这样的循环,您需要添加一些非常简单的条件,但在其他列上使用PRIOR运算符。
例如:对你的CONNECT BY子句,添加
and prior emp_id is not null
(假设emp_id永远不能为空)。