【问题标题】:How to get all child of a given id in SQL Server query如何在 SQL Server 查询中获取给定 ID 的所有子项
【发布时间】:2013-08-26 11:23:59
【问题描述】:

我在 SQL Server 数据库中有两个表:

category( 
   itemid, 
   parentid
)

ArticleAssignedCategories(
   categid, 
   artid
)

categiditemid 的外键

我想计算给定itemidartids 和子代(子代指给定itemidparentid 的类别。)

例如;如果给定itemid = 1 并且在表中category 有 (3,1),(4,1)(5,3)

3、4、5 都是 1 的孩子

谁能帮我写一个好的查询?

【问题讨论】:

标签: sql sql-server


【解决方案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

【讨论】:

    【解决方案2】:

    这里是查询。希望对你有帮助

    select b.artid,count(b.artid) from category a
    inner join ArticleAssignedCategories b on a.itemid = b.artid
    group by b.artid
    

    【讨论】:

      猜你喜欢
      • 2021-06-07
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-10
      相关资源
      最近更新 更多