OS : MS server 2000
DB : MS sql 2005
+ 생물
+ 동물
+ 육식동물
+ 호랑이
+ 사자
+ 초식동물
+ 사슴
+ 토끼
+ 식물
+ 수중식물
+ 미역
+ 파래
+ 육상식물
+ 소나무
+ 참나무
위의 트리와 같이 구성하기위하여
menu_no | p_menu_no | menu_name
1 0 생물
2 1 동물
3 1 식물
4 2 육식동물
5 2 초식동물
6 3 수중식물
7 3 육상식물
8 4 호랑이
9 4 사자
10 5 사슴
11 5 토끼
12 6 미역
13 6 파래
14 7 소나무
15 7 참나무
테이블에 데이터를 넣었습니다.
여기서 저가 원하는 것은
참나무와 사자를 검색했을때 나오는 트리모양이 아래와 같았으면 합니다.
+ 생물
+ 동물
+ 육식동물
+ 사자
+ 식물
+ 육상식물
+ 참나무
데이터 정렬로는
menu_no | p_menu_no | menu_name
1 0 생물
2 1 동물
4 2 육식동물
9 4 사자
3 1 식물
7 3 육상식물
15 7 참나무
위와 같이 데이터를 정렬 하고 싶습니다.
이러한 경우에는 어떻게 하면 좋을까요?
어떠한 방식으로 스키마를 바꿔야 하는지 또는 추가되어야 하는지,
쿼리는 무엇인지...
with 를 사용해서 쿼리를 만들어 봤는데 저가 원하는 정렬이 안되더군요
위의 테이블명이 TEST로 봤을때
WITH DirectReports (p_menu_no, menu_no, menu_name)
AS
(
SELECT p_menu_no, menu_no, menu_name
From TEST
WHERE menu_no = 9 or menu_no = 15
UNION ALL
SELECT p.p_menu_no, p.menu_no, p.menu_name
From TEST AS p
INNER JOIN DirectReports AS d
ON p.menu_no = d.p_menu_no
)
Select p_menu_no, menu_no, menu_name
from DirectReports
group by p_menu_no, menu_no, menu_name
이렇게 쿼리를 만들어 봤는데... 정렬이 OTL 입니다..
우찌 좋은 방법이 없을까요?
------------ sql -------------------
CREATE TABLE TEST (
menu_no int
, p_menu_no int
, menu_name NVARCHAR(10)
)
INSERT INTO TEST
SELECT '1', '0', '생물' UNION ALL
SELECT '2', '1', '동물' UNION ALL
SELECT '3', '1', '식물' UNION ALL
SELECT '4', '2', '육식동물' UNION ALL
SELECT '5', '2', '초식동물' UNION ALL
SELECT '6', '3', '수중식물' UNION ALL
SELECT '7', '3', '육상식물' UNION ALL
SELECT '8', '4', '호랑이' UNION ALL
SELECT '9', '4', '사자' UNION ALL
SELECT '10', '5', '사슴' UNION ALL
SELECT '11', '5', '토끼' UNION ALL
SELECT '12', '6', '미역' UNION ALL
SELECT '13', '6', '파래' UNION ALL
SELECT '14', '7', '소나무' UNION ALL
SELECT '15', '7', '참나무'
WITH DirectReports (p_menu_no, menu_no, menu_name)
AS
(
SELECT p_menu_no, menu_no, menu_name
From TEST
WHERE menu_no = 9 or menu_no = 15
UNION ALL
SELECT p.p_menu_no, p.menu_no, p.menu_name
From TEST AS p
INNER JOIN DirectReports AS d
ON p.menu_no = d.p_menu_no
)
Select p_menu_no, menu_no, menu_name
from DirectReports
group by p_menu_no, menu_no, menu_name
|