COPY aircrafts_tmp FROM '/home/postgres/aircrafts_tmp.csv' WITH ( FORMAT csv ); 8.* В тексте главы был приведен запрос, предназначенный для учета числа биле-
тов, проданных по всем направлениям на текущую дату. Однако тот запрос был
рассчитан на одновременное добавление только одной записи в таблицу «Пере-
леты» (ticket_flights_tmp). Ниже мы предложим более универсальный за-
прос, который предусматривает возможность единовременного ввода несколь-
ких записей о перелетах, выполняемых на различных рейсах.
Для проверки работоспособности предлагаемого запроса выберем несколько
рейсов по маршрутам: Красноярск — Москва, Москва — Сочи, Сочи — Москва,
Сочи — Красноярск. Для определения идентификаторов рейсов сформируем
вспомогательный запрос, в котором даты начала и конца рассматриваемого пе-
риода времени зададим с помощью функции bookings.now. Использование
этой функции необходимо, поскольку в будущих версиях базы данных могут
быть представлены другие диапазоны дат.
SELECT flight_no, flight_id, departure_city, arrival_city, scheduled_departure FROM flights_v WHERE scheduled_departure BETWEEN bookings.now() AND bookings.now() + INTERVAL '15 days' AND ( departure_city, arrival_city ) IN ( ( 'Красноярск', 'Москва' ), ( 'Москва', 'Сочи'), ( 'Сочи', 'Москва' ), ( 'Сочи', 'Красноярск' ) ) ORDER BY departure_city, arrival_city, scheduled_departure; Обратите внимание на предикат IN: в нем используются не индивидуальные
значения, а пары значений.
Предположим, что в течение указанного интервала времени пассажир плани-
рует совершить перелеты по маршруту: Красноярск — Москва, Москва — Сочи,
Сочи — Москва, Москва — Сочи, Сочи — Красноярск. Выполнив вспомогатель-
ный запрос, выберем следующие идентификаторы рейсов (в этом же порядке):
13829, 4728, 30523, 7757, 30829.
229