求一sql语句

ysen1984 2006-10-24 10:58:36
表a
aid Title parentID
--------------------------
1 aa 0
2 bb 0
3 cc 10
4 ee 10
5 dd 10
6 ff 10
7 gg 9
8 hh 1
9 ii 0
10 jj 0
11 kk 10
12 ll 10
13 mm 10

表b

id newstitle aid content
-------------------------------
1 aaa 3 aaa
2 bbb 3 aaa
3 ccc 3 aaa
4 ddd 4 aaa
5 eee 4 aaa
6 rrr 4 aaa
7 fff 5 aaa
8 ggg 5 aaa
9 hhh 5 aaa
10 iii 5 aaa
11 jjj 6 aaa
12 kkk 6 aaa
13 lll 7 aaa
14 mmm 7 aaa
15 nnn 8 aaa
16 ooo 8 aaa
17 ppp 11 aaa
18 qqq 12 aaa
19 sss 13 aaa
20 ttt 13 aaa
-------------------------------------
在表 a中 parentID=0的是父节点
不是0的时候为子节点
当父节点的aid=其他节点的parentID时
那些节点就是为改父节点的子节点
比如
3 cc 10
4 ee 10
5 dd 10
6 ff 10
就是
10 jj 0
的子节点==
而表b 的 aid就是为表a的 aid
我现在要的结果是列出所有的父节点以及父节点中的字节点所包含的news的数目
如:
aid(父节点ID) title(父节点名称) newsNum(新闻数)
-----------------------------------------------------
1 aa 2(对应aid=8 的数目)
2
9
10 jj 16(对应aid为3,4,5,6,11,12,13)

如何写???谢谢各位了~~~
...全文
68 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
seesharp 2006-10-25
  • 打赏
  • 举报
回复



create table #temp
(
aid int,
newsNum int
)
declare @id int
--- 遍历所有父节点
declare cur cursor for select aID from a where parentid = 0
open cur
fetch next from cur into @id
while @@fetch_status = 0
begin
--- 对每一个父节点的子节点集合到b表中取出记录总数
insert into #temp select @id as aid,count(*) as newsNum from b where aid in
(select aid from a where parentid = @id)
fetch next from cur into @id
end
close cur
deallocate cur
select a.aid,title,newsNum from #temp,a where a.aid = #temp.aid
drop table #temp
job_2006 2006-10-25
  • 打赏
  • 举报
回复
学习
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-10-24 10:58
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。