我从 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),它只能捕捉到“今天的出发”。午夜之后,它只捕获“新的一天出发”,而前一天的出发则丢失,因为它们有离开时间,例如“24:05”(=不大于 $time 00:05)。是否可以在第二天使用比 UNION 相同查询更轻的东西?如果 UNION 正在使用,我如何订购 LIMIT 修剪的离场?
Trips.start_time 和 end_time 是我用来加速 SQL 查询执行的辅助变量,它表示任意行程的 sequence1-arrival_time 和 MAXsequence-departure_time。