database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 4639 게시물 읽기
No. 4639
트리구조에 관한 질문입니다
작성자
조인국
작성일
2009-02-12 18:16
조회수
6,522

데이터를 트리구조 형식으로 만들기 위해 다음과 같이 테이블을 작성했습니다.


-------------------------------------------------

TeamCode        TeamName            ParentCode

-------------------------------------------------

0001                  회사                      0000

1001                  생산부                   0001

1010                  생산1팀                  1001

1011                  선행조립                1010

1012                  후행조립                1010

1020                  생산2팀                  1001

1021                  금형가공                 1020

1022                  금형조립                 1020

1030                  의장1팀                  1001                  

1040                  의장2팀                  1001

2001                  영업부                    0001

2010                  영업1팀                  2001

2020                  영업2팀                  2001

3001                  자재부                    0001

3010                  구매1팀                  3001

3020                  구매2팀                  3001

-------------------------------------------------


데이터가 위와 같을 때, 생산부를 키로 조회하면 다음과 같이 나오면 됩니다.


-------------------------------------------------

TeamCode        TeamName            ParentCode

-------------------------------------------------

1001                  생산부                   0001

1010                  생산1팀                  1001

1011                  선행조립                1010

1012                  후행조립                1010

1020                  생산2팀                  1001

1021                  금형가공                 1020

1022                  금형조립                 1020

1030                  의장1팀                  1001                  

1040                  의장2팀                  1001


이 때, 검색 조건을 반드시 ParentCode를 중심으로 찾아야 합니다.

여기서는 TeamCode가 규칙성이 있는 것처럼 보이지만, 실제로는 이런 구조가 반드시 유지되지는

않거든요.


부탁드립니다.

이 글에 대한 댓글이 총 3건 있습니다.
http://sqler.pe.kr/web_board/view_list.asp?id=89376&read=5&pagec=1&gotopage=1&block=0&part=myboard1&tip=
^^님이 2009-02-13 08:39에 작성한 댓글입니다. Edit
2005 라면 이걸 사용해 보세요

bom 트리 보여 줄때 이걸 사용했었거든요

http://msdn.microsoft.com/ko-kr/library/ms175972.aspx
666님이 2009-02-13 14:30에 작성한 댓글입니다. Edit

윗분이 이야기하신 것처럼 CTE를 이용하시면 이렇게 간략하게 가능합니다.
조직도 표현시 필요한 조직레벨까지 넣었습니다. ^^;

with ctest (TeamCode, TeamName,ParentCode, level)
as
(
   select TeamCode, TeamName,ParentCode , 0 as level  from BomTest  where ParentCode='0000'
union all
   select t.TeamCode, t.TeamName,t.ParentCode, (c.level+1)
   from BomTest t join ctest c on t.ParentCode = c.TeamCode
)
select * from ctest


/*
CREATE TABLE BomTest
(
  TeamCode varchar(4)
 ,TeamName varchar(20)
 ,ParentCode varchar(4)
)
GO
Insert into BomTest(TeamCode, TeamName,ParentCode)
select '0001', '회사', '0000' union all
select '1001', '생산부', '0001' union all
select '1010', '생산1팀', '1001' union all
select '1011', '선행조립', '1010' union all
select '1012', '후행조립','1010' union all
select '1020', '생산2팀', '1001' union all
select '1021', '금형가공', '1020' union all
select '1022', '금형조립', '1020' union all
select '1030', '의장1팀', '1001' union all
select '1040', '의장2팀', '1001' union all
select '2001', '영업부', '0001' union all
select '2010', '영업1팀', '2001' union all
select '2020', '영업2팀', '2001' union all
select '3001', '자재부', '0001' union all
select '3010', '구매1팀', '3001' union all
select '3020', '구매2팀', '3001'

Select * from BomTest
*/

trueccie님이 2009-02-25 14:32에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
4643mssql 도와주세요..
mssql
2009-02-16
5300
4642커서를 사용한 프로시져 질문입니다.
장용석
2009-02-13
6211
4641두개의 테이블에서 값 가져오기 [1]
조수한
2009-02-13
6351
4639트리구조에 관한 질문입니다 [3]
조인국
2009-02-12
6522
4638인덱스 정렬과 order by 정렬시 결과가 틀리게 나옵니다 [1]
이윤영
2009-02-12
5704
4637DELETE 질문이요~~ [1]
전준홍
2009-02-12
5306
4636마지막으로 졸업한 학교만 가져오고 싶어요 [1]
구창선
2009-02-11
5249
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다