Используя стандартную базу данных GTFS, я пытаюсь добавить название последней остановки в пути к моему текущему запросу, который возвращает следующее:
| trip_id | service_id | departure_stop | departure_time | arrival_stop | arrival_time | end_departure |
|---------------------------------|------------|----------------|----------------|-----------------|--------------|---------------|
| 15693832.T6.2-EPP-E-mjp-1.11.R | T6_1 | Clifton Hill | 04:56:00 | Flinders Street | 05:07:00 | 05:07:00 |
и так далее.
Мой текущий запрос:
select `t`.`trip_id`,
`c`.`service_id`,
`start_s`.`stop_name` as `departure_stop`,
`start_st`.`departure_time`,
`end_s`.`stop_name` as `arrival_stop`,
`end_st`.`arrival_time`,
`end_st`.`departure_time` as `end_departure`
from `trips` as `t`
inner join `calendar` as `c` on `t`.`service_id` = `c`.`service_id`
inner join `routes` as `r` on `t`.`route_id` = `r`.`route_id`
inner join `stop_times` as `start_st` on `t`.`trip_id` = `start_st`.`trip_id`
inner join `stops` as `start_s` on `start_st`.`stop_id` = `start_s`.`stop_id`
inner join `stop_times` as `end_st` on `t`.`trip_id` = `end_st`.`trip_id`
inner join `stops` as `end_s` on `end_st`.`stop_id` = `end_s`.`stop_id`
where `start_st`.`departure_time` > '00:00:00'
and `start_st`.`departure_time` < '23:59:59'
and `start_s`.`stop_id` = 19974
and `end_s`.`stop_id` = 19854
and start_st.departure_time < end_st.arrival_time
order by arrival_time asc
Я застрял, пытаясь понять, как я могу получить последнюю остановку в таблице stop_times
для trip_id
, которые мой запрос возвращает для каждой строки.
Итак, в дополнение к тому, что у меня есть на данный момент, я хотел бы:
- получить последние
stop_id
для этогоtrip_id
в таблицеstop_times
- получить
stop_name
из таблицыstops
для соответствующегоstop_id
- отображать его как последний столбец в моем выводе как
last_stop
Обновление:
Я попытался выбрать s.stop_name
и добавить следующее внутреннее соединение:
inner join (
SELECT s.stop_name, trip_id
FROM stop_times
INNER JOIN stops as s on `s`.`stop_id` = `stop_times`.`stop_id`
ORDER BY stop_sequence DESC
) s on `t`.`trip_id` = `s`.`trip_id`
Однако это добавляет дополнительные строки для каждой остановки в поездке, где мне нужна только последняя, а добавление LIMIT 1
не дает результатов.
end_s
- это остановка назначения, выбранная пользователем, я хочу, чтобы она также показывала последнюю возможную остановку во всем пробеге/поездке. - person r_t   schedule 01.09.2015