Мне нужен запрос, который выбирает мне все дочерние категории с заданным родительским идентификатором. Моя таблица выглядит следующим образом:Получить иерархические категории родительской категории
|ID | Title | Description | ParentId
--------------------------------------
1 | Games | ... | NULL
и так далее ..
Можно ли решить эту проблему с помощью SQL-запроса?
Дайте мне все дочерние категории категории игр ..
Всех дочерних категорий может иметь несколько дочерних категории и так далее ..
Мне это нужно для моего меню сайта в список продуктов ..
Моя попытка Использование CocoDb Go
;WITH parent
AS (SELECT ParentId
FROM [CocoDb].[dbo].[Categories]
WHERE Id = 11)
,tree AS (SELECT x.ParentId, x.Id
FROM [CocoDb].[dbo].[Categories] x
INNER JOIN [CocoDb].[dbo].[Categories] ON x.Id = 11
UNION ALL
SELECT y.Id, y.ParentId FROM [CocoDb].[dbo].[Categories] y
INNER JOIN [CocoDb].[dbo].[Categories] t ON y.Id = t.ParentId)
Решение:
;WITH parent
AS (SELECT ParentId, Title, Id
FROM [CocoDb].[dbo].[Categories]
WHERE Id = 1
)
,tree AS (
SELECT x.ParentId, x.Id, x.Title
FROM [CocoDb].[dbo].[Categories] x
INNER JOIN parent ON x.ParentId = parent.Id
UNION ALL
SELECT y.ParentId, y.Id, y.Title
FROM [CocoDb].[dbo].[Categories] y
INNER JOIN tree t ON y.ParentId = t.Id
)
SELECT *
FROM Tree
Посмотрите на рекурсию: http://msdn.microsoft.com/en-us/library/ms175972.aspx –