Как сделать, чтобы пара столбцов выводилась только один раз? [PostgreSQL]
Например, имеем результат запроса:
departure_city | arrival_city
----------------+--------------
Москва | Екатеринбург
Екатеринбург | Москва
А нужно сделать, чтобы выводилось один раз Москва - Екатеринбург.
Вот, какой запрос есть, DISTINCT не работает. Нужно как-то модифицировать его. Помогите плиз.
SELECT DISTINCT departure_city, arrival_city
FROM routes r
JOIN aircrafts a ON r.aircraft_code = a.aircraft_code
WHERE a.model = 'Боинг 737-300'
ORDER BY 1;
Ответы (1 шт):
Автор решения: Stormrage
→ Ссылка
Нашел решение своей задачи.
SELECT LEAST(departure_city, arrival_city), GREATEST(departure_city, arrival_city)
FROM routes r
JOIN aircrafts a ON r.aircraft_code = a.aircraft_code
WHERE a.model = 'Боинг 737-300'
GROUP BY 1,2
ORDER BY 1,2
С помощью функций LEAST и GREATEST мы сортируем города, чтобы разнести их по разным столбцам. После, с помощью GROUP BY группируем все города и откидываем лишние маршруты.