Postgresql 循环浏览一个表以填充另一个表
五天前我在这里问了一个问题: 但现在我面临另一个问题。我希望每个路线的所有公共汽车站都按正确的顺序排列,如下所示:Postgresql 循环浏览一个表以填充另一个表,postgresql,loops,request,Postgresql,Loops,Request,五天前我在这里问了一个问题: 但现在我面临另一个问题。我希望每个路线的所有公共汽车站都按正确的顺序排列,如下所示: id_BusLine | id_BusStop | id_BusStop | id_BusStop | id_BusStop | id_BusStop | --------------+------------+------------+------------+------------+------------+ 1 | 4 |
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 |
事实上,我的模式比第一个问题中解释的要复杂一些,因为在公交线路和公交车站之间,我有公交线路,它有地理数据(这里不重要),id_StartBusStop和id_EndBusStop…我做了很多尝试,但我找不到一种方法在公交线路上循环,然后将它们应用到公交线路上
你知道吗
提前谢谢 Postgresql有一个很好的扩展名为crosstab,用来帮助解决这类问题 您将需要tablefunc扩展或contrib模块(基于您所使用的postgres版本)。以下是文档:
文档非常清楚,但是如果您需要进一步的帮助,请发回。您需要的是pivot查询。但这真的不是你应该在数据库中做的事情,如果你需要像那样显示数据,就在你的应用程序中做吧。是的,我就是这么想的。。。这有点棘手,不是很漂亮,但效果很好。对于那些有相同问题的人:只需保存最后一个id的值,并检查每一行是否有相同的id。如果没有,创建一个新实例(并保存id),如果是,只需添加下一个公交车站。