无限分类 查询问题
id, pid, ReportToDepth,ReportToPath
100/1/
200/2/
521/2/5/
3021/2/30/
652/2/5/6/
963/2/5/6/9/
1794/2/5/6/9/17/
16175/2/5/6/9/17/16/
411/1/4/
1042/1/4/10/
id, imgTypeId, imgName
11测试2
32测试2
54测试2
85测试2
25测试2
135测试2
146测试2
116测试2
76测试2
129测试2
49测试21
第一张表 类别表imgType(编号,父类编号,深度,包含类别编号)
第二张表 信息表imgInfo (编号,类别编号,图片名称)
查询:根目录(pid=0) 所包含的类别个数,所包含类别(包括子类)下面的图片数量
要求结果
id类别ID pid 包含的类别个数 图片数
1 0 2 2
2 0 5 9
[解决办法]
数据是不是有点不对。
[解决办法]
看看这个能不能帮你
http://topic.csdn.net/u/20120306/15/238f2ce5-8f96-4756-b8bb-af96f420046c.html?seed=658234112&r=77865502#r_77865502http://topic.csdn.net/u/20120306/15/238f2ce5-8f96-4756-b8bb-af96f420046c.html?seed=658234112&r=77865502#r_77865502
=========================================================================================
欢迎访问我的博客
[解决办法]
参考:
/*标题:SER SERVER 2005中统计各节点及其子节点的数量及合计(逐级汇总)作者:爱新觉罗·毓华(十八年风雨,守得冰山雪莲花开) 时间:2011-05-06地点:重庆航天职业学院id pid name cnt---- ---- ---------- -----------001 NULL 广东省 0002 001 广州市 0003 001 深圳市 0004 002 天河区 0005 003 罗湖区 0006 003 福田区 0007 003 宝安区 0008 007 西乡镇 1009 007 龙华镇 2010 007 松岗镇 3011 006 岗下镇 4012 005 上沙镇 5013 004 天河镇 6-->统计结果如下:id name unit sum_cnt---- ---------- ----------- -----------001 广东省 13 21002 广州市 3 6003 深圳市 9 15004 天河区 2 6005 罗湖区 2 5006 福田区 2 4007 宝安区 4 6008 西乡镇 1 1009 龙华镇 1 2010 松岗镇 1 3011 岗下镇 1 4012 上沙镇 1 5013 天河镇 1 6*/create table tb(id varchar(3) , pid varchar(3) , name nvarchar(10) , cnt int)insert into tb values('001' , null , N'广东省' , 0)insert into tb values('002' , '001' , N'广州市' , 0)insert into tb values('003' , '001' , N'深圳市' , 0)insert into tb values('004' , '002' , N'天河区' , 0)insert into tb values('005' , '003' , N'罗湖区' , 0)insert into tb values('006' , '003' , N'福田区' , 0)insert into tb values('007' , '003' , N'宝安区' , 0)insert into tb values('008' , '007' , N'西乡镇' , 1)insert into tb values('009' , '007' , N'龙华镇' , 2)insert into tb values('010' , '007' , N'松岗镇' , 3)insert into tb values('011' , '006' , N'岗下镇' , 4)insert into tb values('012' , '005' , N'上沙镇' , 5)insert into tb values('013' , '004' , N'天河镇' , 6)go;WITH T AS( SELECT ID , PID , NAME , CNT FROM TB UNION ALL SELECT B.ID , A.PID , A.NAME , B.CNT FROM TB AS A JOIN T AS B ON A.ID = B.PID )SELECT p.id , p.name , count(1) unit, sum(t.cnt) sum_cnt FROM tb p , t where isnull(p.pid,'000') = isnull(t.pid,'000') and p.name = t.name group by p.id , p.name order by p.id drop table tb