Вывод категорий и подкатегорий по ключу (категории и подкатегории находятся в одной таблице)
Есть таблица Category
`
CREATE TABLE [dbo].[Category](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NOT NULL,
[ParentCategoryID] [int] NULL,
CONSTRAINT [PK_Category] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
`
Код запроса выводит основные категории
`
select * from [dbo].[Category] where [ParentCategoryID] is null
`
У категорий могут быть подкатегории, у подкатегорий также могут быть подкатегории.
Как можно вывести их последовательно? Например:
категория 1 подкатегория 1 категории 1 подкатегория 2 категории 1 подподкатегория 1 подкатегории 2 категории 1 подкатегория 3 категории 1 категория 2 подкатегория 1 категории 2 подподкатегория 1 подкатегории 1 категории 2 подкатегория 2 категории 2 подподкатегория 1 подкатегории 2 категории 1
Ответы (1 шт):
Автор решения: koshe
→ Ссылка
Возможно с помошью рекурсивного запроса таким образом:
WITH ct as
(
SELECT ID, Name, ParentCategoryID,ID as PID,0 AS LVL
FROM Category
WHERE ParentCategoryID IS NULL
UNION ALL
SELECT b.*,a.PID,A.LVL+1 as LVL
FROM ct a
INNER JOIN Category b ON a.ID=b.ParentCategoryID
)
SELECT * FROM ct ORDER BY PID,LVL