mysql - 通过同一表中特定行的分层数据(行 = opengeodb 中的位置)

标签 mysql hierarchical-data

我需要查询 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/

相关文章:

php - Jquery,拖拽保存到mysql数据库?

mysql - 获取 MySQL CREATE TABLE 的结果

php - 如何从层次树中导出产品完整类别路径?

sql - 文件系统中目录路径的分层/树数据库

php - MySQL:选择两个日期范围内的所有数据

javascript - 为什么我在运行 mysql 查询时在 Node JS 中收到 'Converting circular structure to JSON' 错误?

mysql - 显示字符百分比

ruby-on-rails - 在 postgres 中存储和检索任意深度嵌套结构的有效方法是什么?

kendo-ui - 扩展和选择 Kendo Treeview 的第一个节点的问题

Oracle PL/SQL 就在根节点查询之前