안녕하세요!
제가 지금 계층적으로 등록된 테이블을 조회하려고 하는데요
제가 찾고싶은건 밑에서부터..? 그러니까
PARENT CHILD
A | B |
B | C |
C | D |
B | E |
E | F |
테이블이 대충 이런 구조로 되어있거든요
그냥 앞에서부터 조회하려고 하면
SELECT *
FROM CATEGORY
START WITH PARENT = 'A'
CONNECT BY PARENT = PRIOR CHILD
로 조회하면 나오잖아요
그런데 저는 저기서 D의 경로만 알고싶거든요..ㅜㅜ
조회하면
A B
B C
C D
이렇게만 나오도록..ㅠㅠ 제일 최상위와 찾고싶은 최하위가 무언지만 아는데
어떻게 조회할 수 있는 방법이 없을까요???
혹시 몰라 역전개 후 다시 정전개를 해봤는데
A | B |
B | C |
C | D |
B | E |
E | D |
이 테이블에서 D를 조회한다고 하면
A B
B C
C D
A B
B E
E D
이렇게 같은 경로(AB)가 2번 중복해서 나오고 순서도 뒤죽박죽이여서..ㅠㅠㅠ
제가 작성해놓은게 이해가 가셨을런지 잘 모르겠네요..
짧게 말하면 START WITH CONNECT BY 사용할때
최상위와 최하위만 아는데 그 사이 경로를 뽑아낼 수 있을까입니다!!
참고로 최상위는 하나이고, 최하위는 여러 개가 올 수가 있습니다..ㅜㅜ
SELECT PARENT, CHILD FROM CATEGORY START WITH PARENT = 'A' CONNECT BY PARENT = PRIOR CHILD INTERSECT SELECT PARENT, CHILD FROM CATEGORY START WITH CHILD = 'D' CONNECT BY PRIOR PARENT = CHILD ;
되나 한 번 확인해보세요 ;
그냥 Path만 보실거면
SELECT CONNECT_BY_ROOT(PARENT) || SYS_CONNECT_BY_PATH(CHILD, '-') PATH FROM CATEGORY WHERE CHILD = 'D' START WITH PARENT = 'A' CONNECT BY PARENT = PRIOR CHILD ;