데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

cte재귀쿼리를 이용해서 이중트리구조를 짜고싶습니다.


다음과 같은 테이블(employees) 있다고 가정


 id                 sidL           sidR


Nancy          Ina                 David
Ina RonDan
David JamesNULL
Ron AndrewJanet
Dan MargaretSteven
James MichaelNULL
Andrew RobertNULL
Janet NULLNULL
Margaret NULLNULL
Steven NULLNULL
Michael NULLNULL
Robert LauraAnn
Laura NULLNULL
Ann NULLNULL





id값(최초 Nancy)을 기준으로 sidL 왼쪽위치  sidR 오른쪽 위치합니다.


따라서 출력은


LVL0                                                                                  Nancy

LVL1                                              Ina ----------------------------------------------David

LVL2                        Ron---------------------- Dan                                     James------------------NULL

LVL3     Andrew-------------  Janet        Margaret--------- Steven         Michael--------NULL        NULL-------- NULL

LVL4

LVL5

.

위와같은 형식이되어야하는대요.




일단 왼쪽라인만 출력했을경우 


WITH EmpCTE(id, sidL, sidR, lvl)

AS

(

      -- Anchor Member(AM)

      SELECT id, sidL, sidR, 0

      FROM employees

      WHERE id = 'Nancy'


      UNION ALL


      -- Recursive Memeber(RM)

      SELECT E.id, E.sidL, E.sidR, M.lvl+1

      FROM employees AS E

      INNER JOIN EmpCTE AS M ON M.sidL = E.id 

)

SELECT * FROM EmpCTE


출력값



id             sidL         sidR        lvl

Nancy    Ina               David        0

Ina            Ron       Dan        1

Ron            Andrew       Janet        2

Andrew    Robert       NULL        3

Robert    Laura       Ann        4

Laura    NULL       NULL        5



LVL0                                                                                  Nancy

LVL1                                              Ina ----------------------------------------------David

LVL2                        Ron---------------------- Dan                                     

LVL3     Andrew-------------  Janet              

LVL4   Robert--------NULL

LVL5  Laura------Ann

.



위 출력값은 왼쪽기준으로만 출력했을때 정상출력이 됩니다.

하지만 왼쪽 오른쪽 모두 출력해야하는대....

어떻게 해야하는지 고수님들의 조언 부탁드립니다.











No. Subject Author Date Views
7052 시스템 카탈로그 임의 수정이 안되네요.. [2] Larry 2013.08.01 4167
7051 웹사이트의 CharSet 설정과 Database의 Collation ... 그 외 상관 관계... Larry 2013.07.31 8363
7050 쿼리문 질문 [6] 황영식_314681 2013.07.30 4461
7049 선배님들 프로시저(락 관련) 조언좀 부탁드립니다... [3] alima 2013.07.30 6400
7048 xml 데이터형의 컬럼을 select 하는데.. [3] 강승생 2013.07.30 4592
7047 해외 서버에 웹사이트를 이전 시켰는데 DB에서 불러온 한글만 깨져요.. [12] Larry 2013.07.26 10371
7046 asp로 ms-sql 2005의 타이틀 컬럼 앞 10자리만 수정시... [2] 다크나인 2013.07.26 6280
7045 SQL DB를 활용하여 회사 프로그램을 작성해야하는데요 MFC 와 C# [2] 씨쎔 2013.07.26 4532
7044 테이블안에 중복 아이디에 순번을 먹이고 싶습니다... [1] dcman 2013.07.25 5008
» cte를 이용 이중트리구조를 출력하려합니다. [1] gtm100 2013.07.25 5140
7042 MsDtsSrvr.exe 오류가 나네요 곰팡이 2013.07.25 7851
7041 SqlServer 2012 인스탄스 제거 질문드립니다. [2] 힘내라장코치 2013.07.25 4943
7040 mssql 7 desktop 버젼 구할 방법이 없을까요 ? [1] 어둠별빛 2013.07.24 4461
7039 쿼리 수정 설명 부탁드립니다. [2] rx프로그래머rx 2013.07.24 4485
7038 키워드 검색을 하는데, 다중 키워드를 and 조건으로 검색하는 경우 [4] 더따뜻한 2013.07.24 6883
7037 데이터의 날짜보다 빠른 모든 6개월 내의 데이터와 조인 질문 [1] 슈팅스타 2013.07.24 4693
7036 해외 호스팅 서버쪽에 SQL2005 서버로 이전 작업 문의드립니다. [2] Larry 2013.07.23 5213
7035 쿼리 고수님들께 문의좀 드립니다. ^^ [2] 남자나무 2013.07.23 5546
7034 mdf 파일 손상히 tail log 백업 방법 [2] Tommy Hilfi 2013.07.23 5499
7033 질문드립니다 [1] 잉잉 2013.07.23 4776





XE Login