【发布时间】:2013-11-25 16:01:05
【问题描述】:
我需要一个查询来选择具有给定父 ID 的所有子类别。我的表格如下所示:
|ID | Title | Description | ParentId
--------------------------------------
1 | Games | ... | NULL
等等..
是否可以通过 sql-query 解决这个问题?
给我游戏类别的所有子类别..
所有子类别可以有更多的子类别等等..
我的网站菜单需要这个来列出产品。
我的尝试
使用 CocoDb
去吧
;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
【问题讨论】:
标签: sql sql-server hierarchical-data