【发布时间】:2011-07-09 19:35:37
【问题描述】:
我有以下表格:
Categories
=================================
CategoryID | ParentID | Text
---------------------------------
1 NULL Text
2 1 Text
3 NULL Text
4 1 Text
Items
=================================
ItemID | CategoryID | Text
---------------------------------
1 1 Text
2 2 Text
3 4 Text
4 3 Text
请记住,这不是一个 n 级层次结构,类别只有 2 个级别,因此任何类别的 parentID 都不能为 2。
我正在寻找的是一种返回类别的方法,其中包含一个额外的列,该列显示该类别拥有的项目数(包括其子类别)。
即我正在寻找一个可以返回如下内容的查询(或过程):
Categories
============================================
CategoryID | ParentID | Text | Count
--------------------------------------------
1 NULL Text 3
2 1 Text 1
3 NULL Text 1
4 1 Text 1
我目前获取与类别关联的项目的方法如下(给定一个 categoryID,@CategoryID):
SELECT * FROM Items
WHERE CategoryID
IN (SELECT CategoryID FROM Categories where ParentID = @CategoryID or CategoryID = @CategoryID)
我的问题是我似乎无法将其链接到类别本身的选择查询。 这可能很简单,但我尝试过使用 CTE 的方法,各种 group by 子句,但类别的分层性质似乎让我的逻辑不正常。
感谢您的帮助!
编辑:查询还需要考虑没有与之关联的项目的类别
【问题讨论】:
标签: sql tsql hierarchical-data categories