我无法弄清楚 GTFS 查询以获取给定停止 ID 和给定方向的下 20 个时间表。
我知道停靠点 ID、行程方向 ID、时间(现在)和日期(今天)
我写
SELECT DISTINCT ST.departure_time FROM stop_times ST
JOIN trips T ON T._id = ST.trip_id
JOIN calendar C ON C._id = T.service_id
JOIN calendar_dates CD on CD.service_id = T.service_id
WHERE ST.stop_id = 3377699724118483
AND T.direction_id = 0
AND ST.departure_time >= "16:00:00"
AND
(
( C.start_date <= 20140607 AND C.end_date >= 20140607 AND C.saturday= 1 ) // regular service today
AND ( ( CD.date != 20140607 ) // no exception today
OR ( CD.date = 20140607 AND CD.exception_type = 1 ) // or ADDED exception today
)
)
ORDER BY stopTimes.departure_time LIMIT 20
这导致找不到记录。如果删除最后一部分,处理 CD 表(即删除或添加的异常),它工作得很好。
所以我认为我写错了对异常的检查。正如上面写的 // 注释,我想检查一下
- 今天是常规服务(通过查看日历表)
- 今天没有移除异常(或者在这种情况下,与此服务 ID 对应的行程不包括在计算中)
- 如果今天增加了例外,则相应的行程应包含在计算中
你能帮我吗?