문제

나는 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top