2016-03-22 14 views
0

ich eine Mysql-Tabelle Waypoint haben, wo alle Wegpunkte einer Reise gespeichert:Mysql Self-Join statt Group_concat

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

Jetzt möchte ich alle möglichen Direktflüge bekommen die ganze Reise zu decken

tripID, Abfahrt, Destination

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

ich habe es mit Group_concat versucht, aber das half nicht

Irgendwelche Ideen?

Antwort

1

Was Sie haben ein Grafikproblem, und MySQL ist nicht gut ausgestattet, um diese zu lösen. Die fehlende Funktionalität besteht aus rekursiven Abfragen.

In Ihrem Fall, aber ich glaube, Sie tun können, was Sie mit einem selbst anschließen möchten:

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

Notiere die < Zustand. Es filtert Dubletten der Form "Madrid, Barcelona" heraus.

+0

Perfect vielen Dank !! – user1720222