本帖最后由 wren4255 于 2011-11-07 09:04:13 编辑

解决方案 »

  1.   

    是Web应用还是桌面应用?
    是用什么语言实现的?
    再有不管用什么语言实现,得看你数据库表的具体定义。
      

  2.   

    category表
    category_no   //画面中选择的值,主键,代表中国,大连等,值例:中国-4430,大连-4550
    endflag       //最后层判定flag
    category_parent_no  //亲子关系,例:大连的category_parent_no 就是4430
    category_nm   //画面中选择的名,如中国,大连等
    level_no      //属于第几层,如中国,就是1,朝阳是3,不知道能不能用上customer 表
    customer_no    //pk,count对象
    category_no    //与category表连接key
    例子category表
    category_no---endflag---category_parent_no---category_nm---level_no
    4430---0---null----中国----1
    4550---0---4430---大连---3
    4800---1---4660---朝阳---3customer 表
    customer_no---category_no
    1---null
    2---4800(endflag=1的值 )
      

  3.   

    1. 假设楼主的菜单联动已经实现,并且能够取得所选择的行政区域的ID = sAreaID。
    2. 假设楼主的数据存储结构如下:
        表A 区域关系表
       区域ID(AREA_ID) 上级区域ID(PAREA_ID) 区域等级(AREA_LEVEL)    表B 区域人口表
       区域ID(AREA_ID) 人员编号(Member_ID) ........3. 对应的SQL:SELECT COUNT(1)
    from
       (SELECT AREA_ID 
       FROM A 
       START WITH AREA_ID = :sAreaID 
       CONNECT BY PAREA_ID = PRIOR AREA_ID) X,
       B
    WHERE X.AREA_ID = B.AREA_ID ;    
      

  4.   

    谢谢阿,不过
    假设楼主的菜单联动已经实现,并且能够取得所选择的行政区域的ID = sAreaID。
    这个没实现阿,挺难的,如果我选中国-辽宁-不指定,就需要查询所有辽宁省的市,区,的sAreaID,这个怎么实现呢?
      

  5.   


    我们来整理下你的需求,假设辽宁省下面有三个市A、B、C,操作中选择了中国-辽宁-不指定,
    那么你的查询结果是只列出辽宁省总人数?
    辽宁 30,000,000人还是要列出辽宁及三个城市的的人数?
    辽宁 30,000,000人
    A    10,000,000人
    B    15,000,000人
    C     5,000,000人我在5楼提供的方法可以实现第1种需求,也就是显示辽宁省的总人数,只需要将辽宁省的ID做为sAreaID进行查询就可以,在SQL中利用了ORACLE的connect by方法自动进行了递归查询获得了辽宁省下属的所有城市及街道。下面我将SQL加上注释,以方便理解。-- 3. 最后取得所有子行政区下属的人口的总数
    SELECT COUNT(1)
    from
       -- 1. 查询所有sAreaID的下属行政区
       (SELECT AREA_ID 
       FROM A 
       -- 以AREA_ID = :sAreaID做为递归的起始节点
       START WITH AREA_ID = :sAreaID 
       -- 查询所有子行政区进行递归
       CONNECT BY PAREA_ID = PRIOR AREA_ID) X,
       -- 2. 将查询得到的行政区与人口表进行关联
       B
    WHERE X.AREA_ID = B.AREA_ID ;
      

  6.   

    求的是总数,下面的函数理解不太好,我去看看,谢谢啦
    START WITH AREA_ID = :sAreaID 
       -- 查询所有子行政区进行递归
       CONNECT BY PAREA_ID = PRIOR AREA_ID) X