Извините за неясное название, но я не знаю, как его подвести.
Я работаю с некоторыми статическими данными расписания поездов, предоставленными мне в нескольких таблицах.Я пытаюсь показать все поезда, которые останавливаются на определенной станции, за исключением тех, которые заканчиваются на указанной станции.Так, например, при перечислении всех поездов, которые останавливаются на станции NYPenn, я не хочу, чтобы эти поезда заканчивались на станции NYPenn.
Соответствующие таблицы:
trips
- перечислить всеиз поездок, совершаемых каждый день.каждая поездка имеет trip_id
и состоит из одной или нескольких остановок.он также содержит столбец trip_headsign
, который показывает конечный пункт назначения поезда, но в виде текста (не ID).
+----------+------------+---------+-------------------------+--------------+----------+----------+
| route_id | service_id | trip_id | trip_headsign | direction_id | block_id | shape_id |
+----------+------------+---------+-------------------------+--------------+----------+----------+
| 1 | 1 | 1 | PRINCETON RAIL SHUTTLE | 1 | 603 | 1 |
| 1 | 2 | 2 | PRINCETON RAIL SHUTTLE | 1 | 603 | 2 |
+----------+------------+---------+-------------------------+--------------+----------+----------+
stop_times
- перечисляет все остановки, сделанные каждым поездом.все остановки, сделанные в одной поездке, имеют общий trip_id, так что это то, что я LEFT JOIN
включил.в этой таблице также есть столбец с именем stop_sequence в диапазоне от 1 до n, где n - общее количество остановок для этой поездки.Поезд отправляется в stop_sequence=1
.Это значение варьируется от 2 до 26.
+---------+--------------+----------------+---------+---------------+-------------+---------------+---------------------+
| trip_id | arrival_time | departure_time | stop_id | stop_sequence | pickup_type | drop_off_type | shape_dist_traveled |
+---------+--------------+----------------+---------+---------------+-------------+---------------+---------------------+
| 1 | 21:15:00 | 21:15:00 | 24070 | 1 | 0 | 0 | 0 |
| 1 | 21:25:00 | 21:25:00 | 41586 | 2 | 0 | 0 | 2.5727 |
+---------+--------------+----------------+---------+---------------+-------------+---------------+---------------------+
Этот конкретный поезд делает только две остановки.Последняя остановка (41586) - это то, что указано в столбце заголовка (обратите внимание, что оно не соответствует имени_стопа).
+---------------+---------+---------+-------------------------+----------+----------------+
| stop_sequence | stop_id | trip_id | trip_headsign | block_id | departure_time |
+---------------+---------+---------+-------------------------+----------+----------------+
| 1 | 24070 | 1 | PRINCETON RAIL SHUTTLE | 603 | 21:15:00 |
| 2 | 41586 | 1 | PRINCETON RAIL SHUTTLE | 603 | 21:25:00 |
+---------------+---------+---------+-------------------------+----------+----------------+
+---------+----------------------------+-----------+-----------+------------+---------+
| stop_id | stop_name | stop_desc | stop_lat | stop_lon | zone_id |
+---------+----------------------------+-----------+-----------+------------+---------+
| 41586 | PRINCETON RAILROAD STATION | | 40.343398 | -74.659872 | 336 |
+---------+----------------------------+-----------+-----------+------------+---------+
Итак, опять же, я хочу показать список всехпоезда, которые останавливаются на определенной станции, за исключением тех, которые заканчиваются на данной станции.Запрос, который я написал для этого, (в данном случае для stop_id 105, который является станцией NY Penn):
select stop_sequence, trips.trip_id, trip_headsign, trips.block_id, departure_time from rail_data.trips left join rail_data.stop_times on trips.trip_id = stop_times.trip_id where stop_id = '105' order by departure_time asc;
Это возвращает результаты, подобные этому:
+---------------+---------+-----------------------+----------+----------------+
| stop_sequence | trip_id | trip_headsign | block_id | departure_time |
+---------------+---------+-----------------------+----------+----------------+
| 18 | 1342 | NEW YORK PENN STATION | 6600 | 05:43:00 |
| 1 | 1402 | SUMMIT | 6305 | 06:07:00 |
| 16 | 1328 | NEW YORK PENN STATION | 6604 | 06:34:00 |
| 1 | 1391 | SUMMIT | 6307 | 06:41:00 |
| 19 | 1360 | NEW YORK PENN STATION | 6908 | 06:47:00 |
+---------------+---------+-----------------------+----------+----------------+
В этом случае я хочу, чтобы только поезда, направлявшиеся в САММИТ, появлялись.Но помните, я не могу просто сказать, где stop_sequence> 1, потому что я хочу включить поезда, которые могут быть второй, третьей и т. Д. Остановкой - просто не конечной остановкой.
Заранее спасибо за помощь!