龙空技术网

SQL如何制作一份省市区行政表?

SQL数据库开发 427

前言:

今天我们对“oracle省市表”大概比较关怀,看官们都想要学习一些“oracle省市表”的相关文章。那么小编也在网摘上搜集了一些对于“oracle省市表””的相关资讯,希望大家能喜欢,咱们一起来了解一下吧!

问题描述

在我们日常统计中,经常需要统计到全国各地区的一些销售情况,而全国各地区的行政区划是怎么样的,我们需要做一张省市区的基础表来一一对应。

问题分析

我们在网上通过查找每个省市区的地区编码,可以获取一份完整的省市区SQL脚本。如下图:

​我们通过分析可以得出省市区的层级关系,这样我们就可以根据这个层级关系来制作一份完整的行政区划表了。

解决办法

我们获取的原始表的表名叫China,下面我们来制作这个行政区划表

WITH CTE AS ( SELECT ID,NAME,PId,1 AS LEVEL FROM China WHERE pId = 0 UNION ALL SELECT t.id,t.NAME,t.pId,cte. LEVEL + 1 AS LEVEL FROM China t  JOIN CTE ON t.pId = CTE.id)

使用我们之前介绍的递归查询,将PID和ID进行关联,找出每条记录的层级,用1,2,3,4来表示,如下图:

有了每个城市的层级标记,我们就可以根据层级标记来指定它们具体的城市等级。

SELECT t1.name AS [省] ,t2.name AS [市] ,t3.name AS [县] ,t4.name AS [区]FROM (SELECT * FROM CTE WHERE LEVEL=1) AS t1 LEFT JOIN (SELECT * FROM CTE WHERE LEVEL=2) AS t2 ON t1.id=t2.pIdLEFT JOIN(SELECT * FROM CTE WHERE LEVEL=3) AS t3 ON t2.id=t3.pIdLEFT JOIN(SELECT * FROM CTE WHERE LEVEL=4) AS t4 ON t3.id=t4.pId

如下图:

这样一份完整的城市区划表就建好了。

标签: #oracle省市表