Самостоятельная регистрация без дубликатов - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть таблица, которая представляет возможные соединения между станциями общественного транспорта.Это выглядит так:

trip_id | station_id | sequence
--------+------------+---------
  1     |   A        |   1
  1     |   B        |   2
  1     |   C        |   3
  2     |   C        |   1
  2     |   B        |   2
  2     |   A        |   3

Теперь я хочу выбрать все возможные соединения между двумя станциями без дубликатов, т.е. мне просто нужно соединение A-> B, а не B-> A.

Я придумал это Присоединение, но, к сожалению, есть дубликаты:

SELECT DISTINCT c1.station_id, c2.sation_id 
FROM connections c1, connections c2 
WHERE c1.trip_id = c2.trip_id AND c1.sequence = c2.sequence-1

1 Ответ

0 голосов
/ 26 ноября 2018

Самый простой способ - это вариация вашего кода:

SELECT DISTINCT LEAST(c1.station_id, c2.station_id) as station_id1,
       GREATEST(c1.station_id, c2.station_id) as station_id2
FROM connections c1 JOIN
     connections c2 
     c1.trip_id = c2.trip_id AND c1.sequence = c2.sequence - 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...