我有一个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,但没有帮助
有什么想法吗?
答案 0 :(得分:1)
你有什么图形问题,并且MySQL没有很好地解决这些问题。缺少的功能是递归查询。
但是,在你的情况下,我认为你可以通过自我加入做你想做的事情:
select wp1.tripid, wp1.location, wp2.location
from Waypoint wp1 join
Waypoint wp2
on wp1.tripid = wp2.tripid and wp1.id < wp2.id;
请注意<
条件。它过滤掉了马德里,巴塞罗那和#34的形式的重复。