我需要查询 opengeodb 以找出给定位置的“Bundesland”。您可以在 DB Schema 找到有关数据库架构的信息。 .抱歉,只有德文文档文本,但此页面上的图形模式是英文的。
为了以后可以扩展 opengeodb,数据以特殊方式存储,这意味着任何位置数据都有行和类型,但位置之间没有直接关系。如果它与位置直接相关,您可以轻松地将其他信息查询到特定的 location_id。但是我需要通过一个等级链向上爬,我不知道需要多少步。
例如:我有一个 loc_id = 1 的村庄,我知道这个村庄是 loc_id = 2 的一部分(loc_id = 2 比方说县)我知道因为村庄 loc_id = 1 也存储了位置该村庄属于保留另一个 loc_id 的“part_of”字段。
但现在这是我的问题 - 我想知道这个村庄在链中向上属于哪些其他位置。在这种情况下,我需要状态
例如村->县->区->州
这甚至可以使用纯 SQL 还是我需要编写脚本?
我尝试用示例数据来解释它。
loc_id | type | name | part_of
----------------------------------------
1 | village | Springfield | 2
2 | county | Countyname | 3
3 | state | Statename | 4
...
我现在需要一个 SQL,它可以返回村庄的所有数据(WHERE loc_id = 1),然后在 hirachy 中向上走,并在附加的 cloumn 中为我提供州名。像这样的东西:
1 | Springfield | Statename
应该是结果。
这个可以查询吗?而且,链条的步数始终相同也不安全(可能之间有一个地区,或者村庄属于一个城市,然后属于一个县)。在到达 type = 'state' 之前,有必要停止向上行走。
感谢您的任何想法! 问候 马库斯
最佳答案
标准 SQL 支持递归查询,但 MySQL 没有此功能 (yet)。
即使不支持递归查询,也有多种方法可以在 MySQL 中存储分层数据。看我的介绍Models for Hierarchical Data with SQL and PHP例如。
关于mysql - 通过同一表中特定行的分层数据(行 = opengeodb 中的位置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3283431/