WHERE s.aircraft_code = a.aircraft_code
AND a.model ~ '^Cessna'
ORDER BY s.seat_no;
В этом варианте запроса условие соединения таблиц s.aircraft_code = a.aircraft_code
перешло из предложения FROM в предложение WHERE, а таблицы просто перечис-
лены в предложении FROM через запятую. Простые запросы зачастую записывают
именно в такой форме, без предложения JOIN, а в предложении WHERE указывают
критерии, которым должны удовлетворять результирующие строки.
Изучая язык SQL вообще и способы выполнения соединений в частности, нужно
иметь в виду, что
результатом любых реляционных операций над отношениями (таб-
лицами, представлениями) также является отношение
. Поэтому такие операции мож-
но произвольно комбинировать друг с другом.
В соединении одна и та же таблица может участвовать дважды, т. е. формировать
соединение таблицы с самой собой
. В качестве примера рассмотрим запрос для
создания представления «Рейсы» (flights_v), о котором шла речь в главе 5. Этот запрос
выглядит так:
CREATE OR REPLACE VIEW flights_v AS
SELECT f.flight_id,
f.flight_no,
f.scheduled_departure,
timezone( dep.timezone, f.scheduled_departure )
AS scheduled_departure_local,
f.scheduled_arrival,
timezone( arr.timezone, f.scheduled_arrival )
AS scheduled_arrival_local,
f.scheduled_arrival - f.scheduled_departure
AS scheduled_duration,
f.departure_airport,
dep.airport_name AS departure_airport_name,
dep.city AS departure_city,
f.arrival_airport,
arr.airport_name AS arrival_airport_name,
arr.city AS arrival_city,
f.status,
f.aircraft_code,
f.actual_departure,
timezone( dep.timezone, f.actual_departure )
Достарыңызбен бөлісу: |