循环通过表填充另一个

时间:2013-06-18 11:42:22

标签: postgresql loops request

我在几天前问了一个问题:Order SQL request when each row contains id of the next one

但现在我遇到了另一个问题。我想以正确的顺序获得每个公共汽车站点,如下所示:

  id_BusLine  | id_BusStop | id_BusStop | id_BusStop | id_BusStop | id_BusStop |
--------------+------------+------------+------------+------------+------------+
      1       |      4     |      8     |      2     |      1     |      6     |
      2       |      6     |      1     |      2     |      8     |      4     |
      3       |      12    |      1     |      8     |      6     |      7     |

事实上,我的架构比第一个问题中解释的架构稍微复杂一些,因为在BusLine& BusStop,我有BusRoad,它有地理数据(这里没关系),id_StartBusStop和id_EndBusStop ...我做了很多尝试,但我找不到循环通过BusRoads然后将它们应用到BusLines的方法...

你有什么想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

Postgresql有一个很好的扩展名为crosstab,用于帮助解决这类问题。

你需要tablefunc扩展或contrib模块(基于你所使用的postgres版本)。这是文档:http://www.postgresql.org/docs/9.2/static/tablefunc.html

文档很清楚,但如果您需要进一步的帮助,请回复。