T-SQL关于递归查询(CTE)的一些问题

时间:2010-11-29 19:17:35

标签: tsql common-table-expression

我使用CTE(here)从树中获取所有项目(例如广告),但我想知道两件事 - 最难的部分:

1)是否有可能获得所找到广告的所有类别名称? (在递归CTE查询中,查看上面的超链接)

2)和(可选)如何获得每个类别的总找到广告的计数?我的意思是,假设我发现了3个类别中的6个项目,我希望以这种方式看到结果

category1 (6) -\
|               category3 (4)
category2 (2)

任何想法都会非常有用

1 个答案:

答案 0 :(得分:1)

对于你需要从下到上的第一个问题,可以通过更改查询顺序解决它:

with CTE (id, pid, name) 
as
(
select id, parentid as pid,name
from category
where id = @lowLevelCategory
union all
select CTE.pid as id , category.parentid as pid, category.name
from CTE 
inner join category 
on category.id = CTE.pid
)
select * from ss

对于第二个:你只能计算子项的数量,但不计算summ,你需要一些函数用于这个计算,因为分组或子选择不能在递归部分