日期:2014-05-16 浏览次数:21862 次
--如查内蒙古自治区: select * from tableA where id like '15%';
------解决方案--------------------
使用'父节点'和'子节点'进行存贮。
树型查找时使用connect by ,start with,请参考:
http://topic.csdn.net/t/20030512/23/1774674.html
------解决方案--------------------
参考一下
create table test (p varchar2(20),s varchar2(20)); insert into test values('中国','江苏'); insert into test values('中国','浙江'); insert into test values('江苏','南京'); insert into test values('南京','鼓楼区'); insert into test values('南京','江宁区'); insert into test values('南京','白下区'); SQL> select * from test start with p='中国' connect by prior s=p; P S -------------------- -------------------- 中国 江苏 江苏 南京 南京 鼓楼区 南京 江宁区 南京 白下区 中国 浙江 6 rows selected SQL> select * from test start with p='江苏' connect by prior s=p; P S -------------------- -------------------- 江苏 南京 南京 鼓楼区 南京 江宁区 南京 白下区
------解决方案--------------------
类似这样的需求,我们数据仓库项目是这么建的,
建立层次结构表,设置四个字段如下:
ID: 省\市\区ID,唯一
PID: 父ID
CC: 层次(数据仓库作为维度节点计算需要用到)
MC: 名称
例如:
ID PID CC MC
1000 0 0 中国
1001 1000 1 广东省 --省
1011 1001 2 广州市 --市
1211 1011 3 天河区 --区
1212 1011 3 白云区
1213 1011 3 海珠区
1012 1001 2 深圳市 --市
2011 1012 3 蛇口区 --区
2013 1012 3 东山区
2014 1012 3 高新区