이런 트리 쿼리는 어떻게 짜야 할까요..? 0 2 3,700

by 손님 [SQL Query] 트리 connect by [2009.10.13 18:19:02]


 

원본 테이블

A A1
A A2
A A3
A1 A11
A1 A12
A1 A13
A2 A21
A2 A22
A2 A23
A21 A211
A21 A212
A21 A212

 안에 내용이 이런식으로 되어 있어서 화면을 클릭할때 마다 하위 메뉴를 트리 구조를 보여주고 있어서

다음과 같이 모든 화면에 대한 트리 구조를 뽑고 싶은데 쉽지가 않네요..

A A1 A11  
    A12  
    A13  
  A2 A21 A211
      A212
      A212
    A22  
    A23  
  A3    

 이런식인데 connect_by를 이용하면 원 쿼리 될거 같은데 아이디어가 떠오르질 않네요..

힌트라도 부탁 드립니다.

by 마농 [2009.10.14 09:04:07]
WITH t AS
(
SELECT 'A' cd, 'A1' ccd FROM dual
UNION ALL SELECT 'A' , 'A2' FROM dual
UNION ALL SELECT 'A' , 'A3' FROM dual
UNION ALL SELECT 'A1' , 'A11' FROM dual
UNION ALL SELECT 'A1' , 'A12' FROM dual
UNION ALL SELECT 'A1' , 'A13' FROM dual
UNION ALL SELECT 'A2' , 'A21' FROM dual
UNION ALL SELECT 'A2' , 'A22' FROM dual
UNION ALL SELECT 'A2' , 'A23' FROM dual
UNION ALL SELECT 'A21', 'A211' FROM dual
UNION ALL SELECT 'A21', 'A212' FROM dual
UNION ALL SELECT 'A21', 'A212' FROM dual
)
SELECT MIN(DECODE(ROWNUM,1,cd)) cd1
, MIN(DECODE(LEVEL,1,ccd)) cd2
, MIN(DECODE(LEVEL,2,ccd)) cd3
, MIN(DECODE(LEVEL,3,ccd)) cd4
FROM t
START WITH cd = 'A'
CONNECT BY cd = PRIOR ccd
GROUP BY ROWNUM - LEVEL
ORDER BY ROWNUM - LEVEL
;

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