日期:2014-05-17  浏览次数:20784 次

联动菜单查询的新问题
说明

查询人口数量

  菜单1---菜单2----菜单3----菜单4
1) 中国----辽宁----大连----西岗区
2) 中国----辽宁----大连----不指定
3) 中国----北京----朝阳----不显示  
4) 中国----不指定



说明:
一共有4层菜单
菜单1--菜单4 都是连动的,如果某个菜单是最后层菜单,那么它的下个菜单就不会显示(如例子:3)
如果不是最后层,那么显示下个菜单,并且不选择[不指定]的话,会显示到菜单4为止(如例子:1)
除了菜单1之外,其余菜单都可以选择[不指定](如例子:2),需要查询大连所有区的人口数
例子4就是查询中国所有省,市,区的人口数



[color=#FF0000][/实现方法color]

SQL code
-- 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 ;



新问题

现在菜单可以复选,比如我想查询辽宁-大连和辽宁-沈阳,而不需要查询 辽宁-鞍山等城市,怎么办呢??

------解决方案--------------------
在connect by处再加一个and条件,对大连和沈阳进行限制罢。
------解决方案--------------------
本质上是删除层次查询的分支。
------解决方案--------------------
这是深度搜索问题。