我有一个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;
请注意
<
条件。它过滤出“巴塞罗那马德里”格式的重复项。