我有一个Mysql表Waypoint,其中保存了旅行的所有航点:

ID,TripID,Location
1 ,5     ,Barcelona
2 ,5     ,Madrid
3 ,5     ,Valencia
4 ,6     ,Berlin
5 ,6     ,Hamburg
6 ,6     ,Munich


现在我想获得所有可能的直航以覆盖整个旅程

TripID,出发地,目的地

5,Barcelona,Madrid
5,Barcelona,Valencia
5,Madrid,Valencia
6,Berlin,Hamburg
6,Berlin,Munich
6,Hamburg,Munich


我已经用group_concat尝试过,但这没有帮助

有任何想法吗?

最佳答案

您有图形问题,而MySQL并不能很好地解决这些问题。缺少的功能是递归查询。

不过,就您的情况而言,我认为您可以通过自连接来完成您想要的事情:

select wp1.tripid, wp1.location, wp2.location
from Waypoint wp1 join
     Waypoint wp2
     on wp1.tripid = wp2.tripid and wp1.id < wp2.id;


请注意<条件。它过滤出“巴塞罗那马德里”格式的重复项。

10-07 15:02