У меня есть таблица, которая содержит данные, подобные приведенным ниже (упрощенно)
+-----------+----------------------------+----------------------------+--------------+----------------+
| voyage_id | voyage_start_at | voyage_end_at | dest_city_id | depart_city_id |
+-----------+----------------------------+----------------------------+--------------+----------------+
| 3 | 2020-01-06 09:00:00.000000 | 2020-01-07 09:00:00.000000 | 21761 | 1778 |
| 2 | 2020-01-05 09:00:00.000000 | 2020-01-06 09:00:00.000000 | 1778 | 1680 |
| 2 | 2020-01-04 09:00:00.000000 | 2020-01-05 09:00:00.000000 | 1778 | 1680 |
| 2 | 2020-01-03 09:00:00.000000 | 2020-01-04 09:00:00.000000 | 1778 | 1680 |
| 2 | 2020-01-02 09:00:00.000000 | 2020-01-03 09:00:00.000000 | 1778 | 1680 |
| 1 | 2020-01-01 09:00:00.000000 | 2020-01-02 09:00:00.000000 | 1680 | 1677 |
| 1 | 2020-01-01 00:00:00.000000 | 2020-01-01 09:00:00.000000 | 1680 | 1677 |
+-----------+----------------------------+----------------------------+--------------+----------------+
Важные вещи:
voyage_start_at
дата такая же, как в предыдущем рейсе voyage_end_at
voyage_id
одинаково для каждой строки, где город назначения и отправления совпадают (рейс может быть разбит на несколько строк
Что я хочу получить от список путешествий из города в город с датами voyage_start_at от первой записи рейса и voyage_end_at от последней записи рейса, поэтому этот пример должен выглядеть так:
+-----------+----------------------------+----------------------------+--------------+----------------+
| voyage_id | voyage_start_at | voyage_end_at | dest_city_id | depart_city_id |
+-----------+----------------------------+----------------------------+--------------+----------------+
| 3 | 2020-01-06 09:00:00.000000 | 2020-01-07 09:00:00.000000 | 21761 | 1778 |
| 2 | 2020-01-02 09:00:00.000000 | 2020-01-06 09:00:00.000000 | 1778 | 1680 |
| 1 | 2020-01-01 00:00:00.000000 | 2020-01-02 09:00:00.000000 | 1680 | 1677 |
+-----------+----------------------------+----------------------------+--------------+----------------+
Я считаю, что это можно получить по запросу MySQL, поэтому я пытался получить это, используя DISTINCT
, JOIN
и подзапрос, но я не получил его вообще. Теперь мне просто интересно, что можно сделать с помощью SQL или, может быть, я должен получить RAW-данные из базы данных и преобразовать их для своих нужд (я использую PHP и TWIG).
Буду благодарен за любые полезные советы и идеи.