Oracle分层查询(三个级联的行政部门)
数据库表dm_xzqh样本(部分):
复制代码代码如下所示:
DM MC
230000黑龙江省
230100哈尔滨市
230101个设区的市
230102代区
232700大兴安岭
230103南岗区
230104区外
230108平房
230109松北
230110香坊区
230111呼兰区
230112阿城区
230123依兰县
农垦238000分局
230124方正县
230125仓
230126巴彦县
230127木兰县
230128通河县
230129延寿县
230182双城市
230183尚志市
现在,行政区划按代码划分为三个等级:省(后四个是0个),市(后两个是0个),县级,同时,他们分别标注他们的等级,以便他们可以在不同程度上查询后。
首先,一个新的公开在上表的基础上发展起来的,它是用来表示行政区划的上级行政部门。具体代码如下:
复制代码代码如下所示:
选择t.dm,t.mc,案例
当substr(t.dm,3)= 1 '0000'then
当substr(t.dm,5)= '00'then to_number(substr(t.dm,1,2)| | '0000)
当substr(t.dm,5)!= '00'then to_number(substr(t.dm,1,4)| | '00 ')
其他0
最后从dm_xzqh不公开
结果如下:
序号DM MC公开
1230000黑龙江省1
2230100哈尔滨市230000
3230101个市辖区230100个
4230102英里地区230100
5232700大兴安岭230000
6230103南岗区230100
230100个中的7230104个
8230108平230100室
9230109松北230100
10230110香坊区230100
11230111呼兰区230100
12230112阿城区230100
13230123依兰县230100
14238000农垦局230000
15230124方正县230100
16230125仓230100
17230126巴彦县230100
18230127木兰县230100
通河县19230128 230100
20230129延寿县230100
21230182双城市230100
尚志市22230183 230100
然后,您可以使用Oracle层次结构对查询中的数据进行分类,具体代码如下所示:
复制代码代码如下所示:
选择水平、DM、MC、公开的
(选择t.dm,t.mc,案例
当substr(t.dm,3)= 1 '0000'then
当substr(t.dm,5)= '00'then to_number(substr(t.dm,1,2)| | '0000)
当substr(t.dm,5)!= '00'then to_number(substr(t.dm,1,4)| | '00 ')结束公开)
{水平= 2 -此语句用于检查各行政区划的级别的条件。
从公开= 1
由之前的DM =公开连接
{逐级};
结果如下:
序号级DM MC公开
11230000 1黑龙江省,水平>1。
22230100,,哈尔滨,级别> 2
33230101市辖区230100县/县,水平>3。
43230102英里地区230100
53230103南岗区230100
230100个中的63230104个
73230108平230100室
83230109松北230100
93230110香坊区230100
103230111呼兰区230100
113230112阿城区230100
123230123依兰县230100
133230124方正县230100
143230125仓230100
153230126巴彦县230100
163230127木兰县230100
通河县173230128 230100
183230129延寿县230100
193230182双城市230100
尚志市203230183 230100
213230184五常市230100
222232700大兴安岭地区230000