У меня есть база данных, полная данных о движении поездов, когда поезд входит в станцию, мы можем получить сообщение о прибытии, и когда поезд покинет станцию, чтобы отправиться в следующий пункт назначения, мы можем получить departure сообщение.mysql group, где другое поле совпадает
поэтому, когда поезд добирается до станции, мы обычно получаем 2 сообщения 1, когда они прибывают, и 1, когда он улетит. Однако иногда есть ошибки в этих данных, и поэтому мы можем получить еще одно сообщение о движении, чтобы исправить данные о выезде/прибытии. Если сообщение движения является исправлением предыдущей, оно будет иметь значение__коррекции 1, иначе оно будет иметь значение коррекции_индекса 0.
Это означает, что для данной станции у нас может быть в общей сложности 4 сообщения (вылет, прибытие , фиксированный выезд, фиксированный заезд)
Я пытаюсь получить сообщения о вылетах 0/1 и сообщения о прибытии 0/1 для каждой станции по маршруту для конкретного поезда. Где мы выбираем сообщение движения в следующем порядке:
- Пика фиксированного сообщения (если он существует) в противном случае
- Пика первого сообщения движения (если он существует) в противном случае
- ничего не выбирает
Мой запрос выглядит следующим образом:
SELECT
tm.variation_status,
tm.planned_timestamp,
tm.platform,
tm.actual_timestamp,
tm.event_type,
tm.timetable_variation,
sched.tps_description
FROM
train_activation ta,
train_movement tm
LEFT JOIN
cif_tiploc sched ON sched.stanox = tm.loc_stanox
WHERE
train_uid = 'C40200'
AND date(creation_timestamp) = '2014-08-20'
AND tm.train_id = ta.train_id
ORDER BY tm.correction_ind ASC
проблема у меня с этим запросом для ая мы можем получить сообщения отправления 0-2 и сообщения о прибытии 0-2. Если я добавлю следующее GROUP BY tm.event_type
(это поле, которое сообщает нам, является ли это сообщением о вылете или прибытии), мы получим всего 2 сообщения, так как они будут группировать все вместе с депатурой и всеми прибывшими!
Как я могу повторно написать этот запрос, поэтому мы выбираем только лучшее сообщение прибытия/дефатирования для каждой станции по маршруту?
- станция может быть идентифицирована
tm.loc_stanox
или sched.tps_description - сообщение покажет нам, если сво развестись или прилета
tm.event_type
- сообщение покажет нам, если его исправление к предыдущему сообщению,
tm.correction_ind
, который будет равен 1, если его коррекция или 0, если его нет
Любая помощь по этому вопросу будет изумительной.