connect by
쿼리에서 매우 기본적인 쿼리를 작성하려고합니다. 하지만 어쨌든 중요한 부분이 하나 빠져 있습니다. 각 "소스"ID에 대해 궁극적 인 "대상"ID가 무엇인지 알고 싶습니다. 쿼리의중간 경로가 아닌 궁극적 인 대상을 얻기위한 재귀 적 오라클 쿼리
src trg
1 2
2 3
3 4
7 8
내 current incarnation (SQL Fiddle)가 원하는 값을 반환합니다 :
select src, connect_by_root trg ult_trg
from t
connect by nocycle prior src = trg
order by ult_trg, src;
문제는 그게 도 반환 원하지 않는 값이다 예를 들어,이 소스 데이터가 있습니다. 원하는 결과는 다음과 같습니다.
1, 4
2, 4
3, 4
7, 8
결과 집합을 원하는 행으로 제한해야하는 이유는 무엇입니까?
나는 그의 첫 번째와 옳은 것이기 때문에 @ pm-77-1을 수락했다. 그러나이 아이디어는 정확하고 매우 흥미 롭습니다. 그것은 내가했던 방식에서 거꾸로 (PRIOR src 대신에 pre trg) 일종의 것입니다. 중첩 된 쿼리가 필요하지 않습니다. 메인 쿼리에서'WHERE CONNECT_BY_ISLEAF = 1'만으로 답이 깔끔해질 것입니다. – mdahlman
네 말이 맞아! 나는 그것을 편집했다. .. 고마워! –
좋은 답변입니다. 나는 들여 쓰기를 조금 바꿔 편집했다. 감사! – mdahlman