Oracle 9i 주어진 아이와 함께 나무의 최고 멤버를 얻습니다.
-
22-07-2019 - |
문제
나는 Oracle 9i 데이터베이스 테이블에 부모-자식 관계가 있습니다.
처럼:
parent | child
1 | 2
2 | 3
2 | 4
null | 1
1 | 8
주어진 자녀에게서 절대 부모를 얻어야합니다. 아이가 4 살이겠다고 말해요. 부모님을 주어야합니다 : 1
이미 연결하려는 모습을 보았지만 해결책을 찾을 수 없습니다.
해결책
쿼리로 Connect를 사용하여 부모 목록을 작성한 다음 필터를 작성할 수 있습니다.
SQL> WITH tree AS (
2 SELECT 1 parent_id, 2 child_id FROM DUAL
3 UNION ALL SELECT 2 , 3 FROM DUAL
4 UNION ALL SELECT 2 , 4 FROM DUAL
5 UNION ALL SELECT null, 1 FROM DUAL
6 UNION ALL SELECT 1 , 8 FROM DUAL
7 )
8 SELECT child_id
9 FROM (SELECT *
10 FROM tree
11 CONNECT BY PRIOR parent_id = child_id
12 START WITH child_id = 4)
13 WHERE parent_id IS NULL;
CHILD_ID
----------
1
다른 팁
SELECT parent
FROM (
SELECT parent
FROM (
SELECT parent, level AS l
FROM mytable
START WITH
child = 4
CONNECT BY
child = PRIOR parent
)
ORDER BY
l DESC
)
WHERE rownum = 1
이것은 당신에게 줄 것입니다 NULL
절대 부모로서.
네가 원한다면 1
, 바꾸다 parent
~와 함께 child
:
SELECT child
FROM (
SELECT child
FROM (
SELECT child, level AS l
FROM mytable
START WITH
child = 4
CONNECT BY
child = PRIOR parent
)
ORDER BY
l DESC
)
WHERE rownum = 1
제휴하지 않습니다 StackOverflow