안녕하세요 mssql 로 트리구조 쿼리를 짜려고 하는데 정렬 순서 때문에 문제가 있네요;;
어떻게 짜야 할지 모르겠어요
sqlserver 2005 사용중입니다.
질문 드립니다.
제가 메뉴를 한번에 출력하는 쿼리를 짜려고 하는데요
테이블 구조는 메뉴 코드 / 상위 메뉴 코드 / 메뉴 명 / 정렬순서(1,2,3,4 이렇게들어감)
문제는 메뉴 1 dept 마다 순서를 정렬 할수 있습니다.
예로
1dept 에 메뉴 1 , 메뉴 2 ,메뉴 3 이 있으면 여기 정렬을 메뉴 1이 3번째 이고 메뉴 3이 2번째 메뉴 2가 3번째로 이렇게 dept 마다 순서가 따로 1 부터 해서 지정을 할수 있거든요
어떻게 한방 쿼리를 만들지 못할까요??
mssql 로 짜야 하는데 답이 안나오네요;; 어떻게 한번에 다 나오게 할수 없을까요??
이런식 입니다.
-메뉴3
-명1
-명3
-명2
-메뉴2
-명명1
-명명5
-명명오3
-명명오1
-명명오2
-명명2
-명명3
-명명4
-메뉴1
-뉴뉴2
-뉴뉴1
WITH t1 AS (-- 원본 테이블 -- SELECT '메뉴3' cd, Null pcd, 1 seq UNION ALL SELECT '명1' , '메뉴3', 1 UNION ALL SELECT '명3' , '메뉴3', 2 UNION ALL SELECT '명2' , '메뉴3', 3 UNION ALL SELECT '메뉴2' , Null , 2 UNION ALL SELECT '명명1' , '메뉴2', 1 UNION ALL SELECT '명명5' , '메뉴2', 2 UNION ALL SELECT '명명오3', '명명5', 1 UNION ALL SELECT '명명오1', '명명5', 2 UNION ALL SELECT '명명오2', '명명5', 3 UNION ALL SELECT '명명2' , '메뉴2', 3 UNION ALL SELECT '명명3' , '메뉴2', 4 UNION ALL SELECT '명명4' , '메뉴2', 5 UNION ALL SELECT '메뉴1' , Null , 3 UNION ALL SELECT '뉴뉴2' , '메뉴1', 1 UNION ALL SELECT '뉴뉴1' , '메뉴1', 2 ) , t2 AS (-- With 구문에서의 Recursive SQL -- SELECT cd, pcd, seq , 1 lv , seq * POWER(10, 6) ord FROM t1 WHERE pcd IS NULL OR pcd = '' UNION ALL SELECT c.cd, c.pcd, c.seq , p.lv + 1 lv , p.ord + c.seq * POWER(10, 6 - p.lv) ord FROM t1 c INNER JOIN t2 p ON p.cd = c.pcd ) SELECT * FROM t2 ORDER BY ord ;