我在SQL Server数据库中有两个表:
category(
itemid,
parentid
)
ArticleAssignedCategories(
categid,
artid
)
categid
是itemid
我希望得到artids
和给定itemid
的孩子(孩子的意思是给定parentid
itemid
的类别。)
例如;如果给定itemid = 1
并且表category
中有(3,1),(4,1)(5,3)
所有3,4,5都是1的孩子
有人可以帮我写一个好的查询吗?
答案 0 :(得分:1)
可以使用CTE
完成递归查询with CTE(itemid, parentid)
as (
-- start with some category
select itemid, parentid
from category where itemid = <some_itemid>
union all
-- recursively add children
select c.itemid, c.parentid
from category c
join CTE on c.parentid = CTE.itemid
)
select count(*)
from ArticleAssignedCategories a
join CTE on CTE.itemid = a.categid
答案 1 :(得分:0)
这是查询。我希望这可以帮到你
select b.artid,count(b.artid) from category a
inner join ArticleAssignedCategories b on a.itemid = b.artid
group by b.artid