Connect by 사용해서 트리형식 가져오는건데 ㅠ 0 2 6,392

by 알데바란 [SQL Query] [2013.01.28 16:21:04]



컬럼은
DEPT_CD / DEPT_NM / DEPT_LVL / HGRNK_DEPT_CD / DEPT_RNKG_1 / DEPT_RNKG_2 / DEPT_RNKG_3
   0000    전사   0     -1   1   0 0
   1000    본사   1     0000   1 0   0
   6000    현업   1 0000   1  0     0
   1040    임원실    4 1000   1  0     0

전사-
   본사
 임원실(하위 없음)
다른거1(하위 있음)
다른거2(하위 있음)
    현업(하위있음)
     다른거1(하위 있음)
다른거2(하위 있음)


형식으로 되어있는데요 ..
제가 짠 쿼리는

SELECT LEVEL dept_lvl, dept_cd, dept_nm, hgrnk_dept_cd
FROM hrha_dept_cd
WHERE use_yn = '1' 
CONNECT BY PRIOR dept_cd = hgrnk_dept_cd
START WITH dept_cd = '0000';

이건데요.. 잘 안되네요 DataBase가 Tibero이긴한데 염치없나요 여기 올리는건 ㅠㅠ 죄송합니다.
너무 급해서요 ㅠ ..
Loop detected during CONNECT BY operation이라고 뜨는데
도와주세요 ~
by 마농 [2013.01.28 17:41:35]

원인은 계층구조가 원형으로 연결되어 무한루프가 발생해서 입니다.

오라클 10G 부터는 NoCycle 이라는 옵션을 주면 됩니다.
CONNECT BY NOCYCLE PRIOR dept_cd = hgrnk_dept_cd
큐브리드는 어떨런지 모르겠네요.

WHERE use_yn = '1' 조건의 수행순서가 어떨런지 모르겟네요.
오라클에서는 Connect By 수행 후에 결과에서 조건 체크합니다.
이 경우 use_yn 이 '1' 이 아닌 자료 때문에 문제가 발생할수도 있으니..
조건을 준 결과집합을 인라인뷰로 감싸서 계층 전개를 해보세요.


by 알데바란 [2013.01.28 19:17:47]

아 ...... 헉 ....... 감사합니다 !!
'이 경우 use_yn 이 '1' 이 아닌 자료 때문에 문제가 발생할수도 있으니..'
어떻게 데이터를 보시지도 않고 이렇게 해답을 주실 수있는지 ㅠㅠ
고맙습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입