解决方案 »
- 求:ORACLE学习资料
- xp下oracle如何进行逻辑备份
- 数据库从Oracle9升级到Oracle10,jdk1.4升级到jdk1.6时,原有的java程序如何改呢?
- 用VC通过ADO调用oracle存储过程返回TCursor, 不会接收TCursor
- 高分求助:在solaris10下如何安装、配置以及使用oracle8i?等答案~谢谢~~
- 重新开放ftp,已有资料20GB
- 在一个更新触发器中,如何知道那些列被更新了?在sqlserver中可以采用update(column),不知道在oracle中如何解决?
- [在线等]一个关于ORACLE触发器的问题,需要查询多个表才能实现,请高手指点一下,谢谢,
- Oracle8i Management and Integration 8.1.7.0.0是必须装的吗?
- sqlplus 如何把输出结果放到一个指定文件
- 请大家帮帮忙,急死我了
- 求一个解决方案。
是用什么语言实现的?
再有不管用什么语言实现,得看你数据库表的具体定义。
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的值 )
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 ;
假设楼主的菜单联动已经实现,并且能够取得所选择的行政区域的ID = sAreaID。
这个没实现阿,挺难的,如果我选中国-辽宁-不指定,就需要查询所有辽宁省的市,区,的sAreaID,这个怎么实现呢?
我们来整理下你的需求,假设辽宁省下面有三个市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 ;
START WITH AREA_ID = :sAreaID
-- 查询所有子行政区进行递归
CONNECT BY PAREA_ID = PRIOR AREA_ID) X