Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête GTFS pour répertorier toutes les heures de départ et d'arrivée entre deux noms d'arrêt

simplement joindre des données ensemble, se joindre à stops deux fois pour le début et la fin de l'arrêt et rejoindre stop_times deux fois pour start et end stop_times,
la seule chose dont je ne suis pas sûr est où direction_id vient de.
essayez la requête ci-dessous.
À la toute fin de la requête, vous pouvez spécifier start_s.stop_id et end_s.stop_id qui représente les deux arrêts pour lesquels vous recherchez des données.

SELECT t.trip_id,
       start_s.stop_name as departure_stop,
       start_st.departure_time,
       direction_id as direction,
       end_s.stop_name as arrival_stop,
       end_st.arrival_time
FROM
trips t INNER JOIN calendar c ON t.service_id = c.service_id
        INNER JOIN routes r ON t.route_id = r.route_id
        INNER JOIN stop_times start_st ON t.trip_id = start_st.trip_id
        INNER JOIN stops start_s ON start_st.stop_id = start_s.stop_id
        INNER JOIN stop_times end_st ON t.trip_id = end_st.trip_id
        INNER JOIN stops end_s ON end_st.stop_id = end_s.stop_id
WHERE c.monday = 1 
  AND direction_id = 1
  AND start_st.departure_time > "00:00:00" AND start_st.departure_time < "23:59:59" 
  AND r.route_id = 1
  AND start_s.stop_id = 42
  AND end_s.stop_id = 1

J'ai essayé de rechercher un exemple de structure GTFS à partir de ce lien et je n'ai rien trouvé sur direction_id

Pour spécifier des noms d'arrêt au lieu de AND start_s.stop_id = 42 AND end_s.stop_id = 1
utilisez simplement AND start_s.stop_name = 'Garrison' AND end_s.stop_name = 'Grand Central'