/*
SELECT concat(arr.airport_code,dep.airport_code)::bpchar, concat(dep.airport_code,arr.airport_code)::bpchar
From airports_data as dep, airports_data as arr
where concat(arr.airport_code,dep.airport_code)::bpchar = concat(dep.airport_code,arr.airport_code)::bpchar
*/
-- ((
-- Π²ΡΠ΅ Π²ΡΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΠ΅ΠΉΡΠΎΠ²
SELECT distinct dep.airport_name->>'en' as departure_airport, arr.airport_name->>'en' as arrival_airport
From airports_data as dep,
-- cross join
airports_data as arr
-- ON
WHERE concat(arr.airport_code,dep.airport_code) <> concat(dep.airport_code, arr.airport_code)
GROUP BY dep.airport_code, arr.airport_code
HAVING (not (dep.airport_code = arr.airport_code))
/*
)
EXCEPT
(
SELECT distinct arr.airport_name->>'en' as departure_airport, dep.airport_name->>'en' as arrival_airport
From airports_data as dep
cross join airports_data as arr
GROUP BY dep.airport_code, arr.airport_code
HAVING not (dep.airport_code = arr.airport_code)
))
EXCEPT
-- Π²ΡΡΠΈΡΠ°Π΅ΠΌ ΠΏΡΡΠΌΡΠ΅ ΡΠ΅ΠΉΡΡ
(
SELECT distinct dep.airport_name->>'en' as departure_airport, arr.airport_name->>'en' as arrival_airport
FROM flights as fl
JOIN airports_data as dep
ON dep.airport_code = fl.departure_airport
JOIN airports_data as arr
ON arr.airport_code = fl.arrival_airport
ORDER BY departure_airport, arrival_airport
)