나는 범주의 계층 구조를 나타 내기 위해 사용하는 간단한 테이블을 가지고 있습니다.SQL 재귀 메뉴 정렬
CREATE TABLE [dbo].[Categories](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Title] [varchar](256) NOT NULL,
[ParentID] [int] NOT NULL,
CONSTRAINT [PK_Categories] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT INTO [MDS].[dbo].[Categories]([Title],[ParentID]) VALUES ('All', 0)
INSERT INTO [MDS].[dbo].[Categories]([Title],[ParentID]) VALUES ('Banking', 8)
INSERT INTO [MDS].[dbo].[Categories]([Title],[ParentID]) VALUES ('USAA Checking', 2)
INSERT INTO [MDS].[dbo].[Categories]([Title],[ParentID]) VALUES ('USAA Mastercard', 2)
INSERT INTO [MDS].[dbo].[Categories]([Title],[ParentID]) VALUES ('Medical', 8)
INSERT INTO [MDS].[dbo].[Categories]([Title],[ParentID]) VALUES ('Jobs', 8)
INSERT INTO [MDS].[dbo].[Categories]([Title],[ParentID]) VALUES ('Archive', 1)
INSERT INTO [MDS].[dbo].[Categories]([Title],[ParentID]) VALUES ('Active', 1)
INSERT INTO [MDS].[dbo].[Categories]([Title],[ParentID]) VALUES ('BoA Amex', 2)
전체 트리를 제외하고는 모두 문제가 없습니다. 여기 내 질문은, 나는 그것이 작동하지 않기 때문에에 의해 내 ORDER를 제거 :
WITH CategoryTree (ID, Title, Level, ParentID) AS
(
SELECT r.ID, r.Title, 0 Level, r.ParentID
FROM Categories r
WHERE r.ParentID = 0
UNION ALL
SELECT c.ID, c.Title, p.Level + 1 AS Level, c.ParentID
FROM Categories c
INNER JOIN CategoryTree p
ON p.ID = c.ParentID
)
SELECT ID,
REPLICATE('-----', Level) + Title AS Title,
ParentID
FROM CategoryTree
결과 :
ID Title ParentID
1 All 0
7 -----Archive 1
8 -----Active 1
2 ----------Banking 8
5 ----------Medical 8
6 ----------Jobs 8
3 ---------------USAA Checking 2
4 ---------------USAA Mastercard 2
9 ---------------BoA Amex 2
내가 원하는 결과를 이것이다 : 무엇을 죽이고
ID Title ParentID
1 All 0
8 -----Active 1
2 ----------Banking 8
9 ---------------BoA Amex 2
3 ---------------USAA Checking 2
4 ---------------USAA Mastercard 2
6 ----------Jobs 8
5 ----------Medical 8
7 -----Archive 1
내가 전에 완벽하게 작동하지만 DB를 백업하는 것을 잊어 버렸고 서버 업그레이드에서 잃어 버렸습니다.
2008 년에 HierarchyID 유형을 살펴 봤지만 동일한 수준의 어린이 주문에 관심이 있다면 엉덩이에 큰 고통이 될 것 같습니다.
당신은 무엇을 정렬하려고하는지 설명해 주시겠습니까? –