"test"라는 테이블이 있습니다. 상위 및 하위 열을 포함합니다.Oracle에서 상위 상위 수준 또는 필드를 어떻게 찾을 수 있습니까?
Parent Child
1 101
1 102
1 103
101 121
101 123
103 133
121 80
121 81
이제 주어진 "1"값에 대한 모든 하위/부모를 가져 오는 쿼리를 작성했습니다.
(SELECT parent,child,LEVEL FROM TEST
START WITH child= 1
CONNECT BY PRIOR parent=child)
UNION ALL
(SELECT parent,child,LEVEL FROM TEST
START WITH parent=1
CONNECT BY PRIOR child=parent)
ORDER BY parent
그러나 나는 주어진 값과 관계없이 그 계층에있는 모든 자식/부모를 원합니다. "80"을 주면 .... 나는 가장 좋은 부모 값 (이 경우 "1")을 가져 와서 그 가장 높은 부모 값 아래에있는 모든 자식을 검색해야합니다.
SELECT parent AS ancestor
FROM X
WHERE CONNECT_BY_ISLEAF <> 0
START WITH child=80
CONNECT BY PRIOR parent=child
-- ^^^^^^^^^^^^^^^^^^
-- ascendant order
는 "궁극적 인 조상을"일단, 두 번째 재귀 쿼리를 얻을 모든 자손 :
내가 당신의 필요를 이해하기 힘든 시간을 보내고 있습니다. 당신은 _ "공통 조상을 가진 모든 아이들"_을 찾고 계십니까? –
'80 '의'가장 좋은 부모 가치 '를'1 '로 만드는 것은 무엇입니까? 사실 그것은 오름차순 정렬 목록에서 가장 낮은 값이기 때문입니까? –
@ Caffé 필자가 이해하는 한, '1'은 궁극적으로 '80 '의 조상이다 : 80 => 121 => 101 => 1'. 그러나 그 후에해야 할 일이 무엇인지 분명하지 않습니다. '1'의 모든 자손 찾기? 아니면 "직접적인"아이들 만? –