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 6648 게시물 읽기
No. 6648
계층쿼리 문의요...
작성자
totoro
작성일
2013-04-01 16:03
조회수
8,508

코드를 계층으로 가지고 오려고 합니다.

 

 테이블은 2개이고요  group 다른 테이블 입니다.

 cod_id, cod_nm, parent_id, parend_nm, group_id, group_nm

cd_001  담당                                             gp_001     직책

cd_002  서버

cd_003   IBM      cd_002,  서버                 gd_002     HW

=================================================

직책

    담당

HW

    서버

        IBM

위와 같은 형태로 가지고 오고 싶은데요...

쿼리의 고수님 한수 부탁드립니다.. ㅠ_ㅠ

테이블이 두개이고...   parent_id가 null이면 group_id를 가지고 와야 하니까 원하는 형태로 나오지 않더라고요...

잘 부탁드립니다.

 

 

 

이 글에 대한 댓글이 총 1건 있습니다.

 CREATE TABLE cod (

  cod_id CHAR(6)
  , cod_nm NVARCHAR(10)
  , parent_id CHAR(6)
  , parent_nm NVARCHAR(10)
 );
CREATE TABLE grp (
  group_id CHAR(6)
  , group_nm NVARCHAR(10)
 );
INSERT INTO cod ( cod_id, cod_nm, parent_id, parent_nm )
SELECT 'cd_001', N'담당', NULL, NULL UNION ALL
SELECT 'cd_002', N'서버', NULL, NULL UNION ALL
SELECT 'cd_003', N'IBM', 'cd_002', N'서버'
;
INSERT INTO grp ( group_id, group_nm )
SELECT 'gd_001', N'직책' UNION ALL
SELECT 'gd_002', N'HW'
;
WITH htbl ( cod_id, cod_nm, parent_id, parent_nm, group_id, lvl )
AS
(
  SELECT cod_id, cod_nm, parent_id, parent_nm, group_id, 1
  FROM cod
  INNER JOIN grp
    ON 'cd_' + SUBSTRING( grp.group_id, 4, 3 ) = cod.cod_id
  WHERE parent_id IS NULL
 
  UNION ALL
  
  SELECT cod.cod_id, cod.cod_nm, cod.parent_id, cod.parent_nm, htbl.group_id, htbl.lvl + 1
  FROM htbl
  INNER JOIN cod ON htbl.cod_id = cod.parent_id
 )
SELECT nm
FROM (
  SELECT REPLICATE( '  ', lvl ) + cod_nm AS nm, group_id, lvl 
  FROM htbl 
  UNION ALL
  SELECT  group_nm AS nm, group_id, 0 AS lvl
  FROM grp INNER JOIN cod ON 'cd_' + SUBSTRING( grp.group_id, 4, 3 ) = cod.cod_id
) AS rst
ORDER BY group_id, lvl
;
우욱님이 2013-04-02 11:13에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6651쿼리를 이용하여 서버에 폴더를 생성할 수 있나요? [2]
구창민
2013-04-08
8172
6650테이블생성질문인데요 [1]
김순인
2013-04-05
8074
6649컬럼 공백 없애기 [2]
도와주셈
2013-04-02
8643
6648계층쿼리 문의요... [1]
totoro
2013-04-01
8508
6647Sql server의 인덱스 관련 시스템 카탈로그 질문
로스칠트
2013-03-29
8448
6646MS-SQL 관련 질문좀요.. [1]
임윤지
2013-03-29
8266
6645오라클의 UTL_TCP 패키지와 같은 기능이 MS-SQL에 있나요? [2]
최영호
2013-03-29
9098
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다