私は GTFS から始めましたが、SQL クエリで大きな問題に遭遇しました。
SELECT *, ( some columns AS shortcuts )
FROM stop_times
LEFT JOIN trips ON stop_times.trip_id = trips.trip_id
WHERE trips.max_sequence != stop_times.stop_sequence
AND stop_id IN( $incodes )
AND trips.service_id IN ( $service_ids )
AND ( departure_time >= $time )
AND ( trips.end_time >= $time )
AND ( trips.start_time <= $time_plus_3hrs )
GROUP BY t,l,sm
ORDER BY t ASC, l DESC
LIMIT 14
これは、次の 3 時間以内にある停留所からの出発を表示するはずです。それは機能しますが、真夜中 (たとえば 23:50) に近づくと、「今日の出発」のみをキャッチします。真夜中以降は「新しい日の出発」のみをキャッチし、前日からの出発は欠落しています。これは、departure_time が「24:05」(= $time 00:05 より大きくない)であるためです。翌日にUNIONの同じクエリよりも軽いものを使用することは可能ですか? UNION を使用している場合、LIMIT によるトリミングの出発を注文するにはどうすればよいですか?
Trips.start_time と end_time は、SQL クエリの実行を高速化するための補助変数です。これは、任意の旅行の sequence1-arrival_time と MAXsequence-departure_time を意味します。