SELECT LEVEL 
       ,SG_CD    //시퀀스
       ,UP_SG_CD  //부모시퀀스
       ,SORT_ORD  //정렬기준
       ,SG_NM   //품목명
       ,LPAD (' ',4*(LEVEL-1), ' ') || LVL TREE
FROM ESRVMSG
WHERE STS <>'D'
START WITH UP_SG_CD='ROOT'
CONNECT BY PRIOR SG_CD = UP_SG_CD
ORDER SIBLINGS BY SORT_ORD ASC
계층형 쿼리를 짜고있는데 일단 레벨과 부모 자식 기준으로 
분배해서 뿌려주는데 까지는 성공했는데
다음 문제는  
1. 특정한 SG_CD 코드가 검색조건으로 들어갔을 때와 
2. SG_NM을 LIKE를 사용하여 검색했을때
그와 관련된 자식노드는 물론이고 부모노드까지 동시에 트리구조로 출력되게 하는 것을 모르겠네요
조금의 팁이 많은도움이 된답니다.
by 마농 [2012.02.02 13:56:39]
WITH t AS
(
-- 상위검색
SELECT sg_cd, up_sg_cd, sort_ord, sg_nm, lvl, sts
FROM esrvmsg
START WITH sg_cd = '000' -- START WITH sg_nm LIKE '%xxx%' -- 조회조건
CONNECT BY sg_cd = PRIOR up_sg_cd
UNION
-- 하위검색
SELECT sg_cd, up_sg_cd, sort_ord, sg_nm, lvl, sts
FROM esrvmsg
START WITH sg_cd = '000' -- START WITH sg_nm LIKE '%xxx%' -- 조회조건
CONNECT BY PRIOR sg_cd = up_sg_cd
)
-- 최종쿼리
SELECT *
FROM t
WHERE sts <> 'D'
START WITH up_sg_cd = 'ROOT'
CONNECT BY PRIOR sg_cd = up_sg_cd
ORDER SIBLINGS BY sort_ord
;

by khyself [2012.02.02 14:03:55]
감사합니다 조언해주신 코드를 참고삼아 열심히 분석을 해봐야겠네요 ^^

by 손님 [2012.04.12 15:39:04]
헉. 이거 보고 순간 감동했음. ㅜㅜ
아이디어가 참 좋네요!!
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입