sql - 查找两个图形点之间的成本

时间:2014-10-16 05:40:30

标签: mysql sql graph

我有一张桌子可以存储两个相邻火车站之间的时间。

+------+------+------+
| s1id | s2id | tbtw |
+------+------+------+
| 234  | 235  | 20   |
| 235  | 133  | 8    |
| 133  | 108  | 15   |
| 234  | 236  | 10   |
| 108  | 500  | 2    |
| 235  | 108  | 21   |
+------+------+------+

我想找到任意两点之间的时间,如果它们可以像从站234到500找到时间那样连接(234-> 235-> 108-> 500)。我知道这就像一张图。我试图找到与t2.s1id = t1.s2id的累积距离,如下所示

select t1.* SUM(t2.tbtw) as sum
from t t1
join t t2 on t1.s2id = t2.s1id
group by t1.id, t1.tbtw

但这并没有给我累积时间或没有正确链接节点

select t1.*
   (select sum(tbtw)
    from t t2
    where t2.s1id = t1.s2.id
   ) as sum
from t t1;

我可以用编程语言轻松完成它,但在sql中,它真的很混乱。我必须使用程序吗?我不能在简单的sql语句中做什么?该解决方案在简单的sql语句中是首选,但其他解决方案也可以。请帮帮我。

1 个答案:

答案 0 :(得分:0)

参见文章:http://hansolav.net/sql/graphs.html

我想这是有帮助的