오라클 계층형 쿼리에 대해서 질문이 있습니다. 자식코드로 연관된 부모코드를 다 가져와서 계층을 표현하고 싶습니다. 0 3 2,532

by 스리갈라 [SQL Query] [2017.03.13 13:54:16]


일단 기존 쿼리 데이터가 나오는게 보면 

코드명          코드   상위코드

외부인건비   40111   44110

내부인건비   44121   44120 

 국내여비     44321   44320

 국외여비     44322   44320

 

이런 식으로 상위코드의 연계가 불확정하여 제대로 된 계층쿼리를 구현하기가 힘듭니다.

국내여비에 대한 부모정보가 없는것이죠...

그래서 결국 저 정보에 대한 계층쿼리를 바탕으로 하여 저 쿼리를 아우터 조인하여 불러오면 되긴합니다만

문제는  불필요한 항목까지도 나와버려서 데이터의 컬럼수가 너무 많아버려지게 된다는 거죠

 

흐음 요약하자면 만약 국내여비의 코드를 입력하면 부모코드를 다 가지고와서 이걸 다시 계층쿼리로 만들고 싶은데

제가 능력이 부족하여 안되네요 ㅠㅠ

패스를 구하긴 했는데 만약 국내여비의 관련된 패스가 /44200/44310/44320/44321 이런 계층을 가지고 있다면

44200(증조할아버지)

    44310(할아버지)

       44320 (국내여비부모)

          44321(국내여비) 

          이런식으로 계층을 만들고 싶습니다. 

이게 너무 어렵네요 ㅠ

도와주시면 감사하겠습니다. 

 

 

 

 

by 마농 [2017.03.13 14:12:04]

결국에 부모코드를 찾아낼 수 있다고 한걸로 봐서는.
데이터가 아예 없어서 안나오는게 아니라.
사용하신 기존쿼리에 문제가 있어서 데이터가 누락된게 아닐까 생각되네요?
사용하신 쿼리와 함께 원본데이터 대비 원하시는 결과데이터를 보여주세요.


by 스리갈라 [2017.03.13 14:47:52]

마농님 설명을 메일로 해드리고 싶은데 메일 주소좀 알려주실수 있습니까?


by 마농 [2017.03.13 15:13:10]

일단 윗부분 내용 무시하고
아랫부분의 특정 자식코드로 부모코드 검색하는 방법 알려드릴께요.
 

SELECT *
  FROM code
 START WITH cd = '44321'   -- 검색조건 : 국내여비(44321)
 CONNECT BY PRIOR pcd = cd -- 계층전개 : 역전개(하위에서 상위로)
 ORDER BY LEVEL DESC       -- 정렬조정 : 역전개 했으므로 거꾸로 다시 정렬
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입