chỉ cần kết hợp dữ liệu với nhau, kết hợp đến stops
hai lần để dừng bắt đầu và kết thúc và tham gia vào stop_times
hai lần cho stop_times bắt đầu và kết thúc,
điều duy nhất tôi không chắc là direction_id
ở đâu đến từ.
hãy thử truy vấn dưới đây.
Ở cuối truy vấn, bạn có thể chỉ định start_s.stop_id
và end_s.stop_id
đại diện cho hai điểm dừng mà bạn đang truy vấn dữ liệu.
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
Tôi đã thử tra cứu ví dụ về cấu trúc GTFS từ liên kết này
và tôi không thể tìm thấy gì trên direction_id
Để chỉ định tên điểm dừng thay vì AND start_s.stop_id = 42 AND end_s.stop_id = 1
chỉ cần sử dụng AND start_s.stop_name = 'Garrison' AND end_s.stop_name = 'Grand Central'