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

解决方案 »

  1.   

    看看这个能不能帮你
    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
    =========================================================================================   

  2.   

    参考:/*
    标题:SER SERVER 2005中统计各节点及其子节点的数量及合计(逐级汇总)
    作者:爱新觉罗·毓华(十八年风雨,守得冰山雪莲花开) 
    时间:2011-05-06
    地点:重庆航天职业学院id   pid  name       cnt
    ---- ---- ---------- -----------
    001  NULL 广东省        0
    002  001  广州市        0
    003  001  深圳市        0
    004  002  天河区        0
    005  003  罗湖区        0
    006  003  福田区        0
    007  003  宝安区        0
    008  007  西乡镇        1
    009  007  龙华镇        2
    010  007  松岗镇        3
    011  006  岗下镇        4
    012  005  上沙镇        5
    013  004  天河镇        6-->统计结果如下:
    id   name       unit        sum_cnt
    ---- ---------- ----------- -----------
    001  广东省        13          21
    002  广州市        3           6
    003  深圳市        9           15
    004  天河区        2           6
    005  罗湖区        2           5
    006  福田区        2           4
    007  宝安区        4           6
    008  西乡镇        1           1
    009  龙华镇        1           2
    010  松岗镇        1           3
    011  岗下镇        1           4
    012  上沙镇        1           5
    013  天河镇        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