日期:2014-05-18  浏览次数:20453 次

无限分类 查询问题
id, pid, ReportToDepth,ReportToPath
1 0 0 /1/
2 0 0 /2/
5 2 1 /2/5/
30 2 1 /2/30/
6 5 2 /2/5/6/
9 6 3 /2/5/6/9/
17 9 4 /2/5/6/9/17/
16 17 5 /2/5/6/9/17/16/
4 1 1 /1/4/
10 4 2 /1/4/10/


 id, imgTypeId, imgName
1 1 测试2
3 2 测试2
5 4 测试2
8 5 测试2
2 5 测试2
13 5 测试2
14 6 测试2
11 6 测试2
7 6 测试2
12 9 测试2
4 9 测试21
第一张表 类别表imgType(编号,父类编号,深度,包含类别编号)
第二张表 信息表imgInfo (编号,类别编号,图片名称)
查询:根目录(pid=0) 所包含的类别个数,所包含类别(包括子类)下面的图片数量
要求结果
id类别ID pid 包含的类别个数 图片数
1 0 2 2
2 0 5 9

------解决方案--------------------
探讨

:( 不是吧 就是实现无限级分类 查询
查询根目录(pid=0)下所包含的类别个数,所包含(包括子类)下面的图片数量

------解决方案--------------------
C# code

select a.id,b.pid,
(select count(0) from imgType c where c.ReportToPath like '%/'+CONVERT(varchar(2),b.id)+'/%') typeCount,
(select COUNT(0) from imgInfo d where d.typeId in (select ID from imgType where c.ReportToPath like '%/'+CONVERT(varchar(2),b.id)+'/%')) imgCount,
from imgInfo a inner join imgType b on (a.typeid=b.id)