THEN seat_row::integer > max_seat_row_business
AND seat_row::integer <= max_seat_row_economy
Также проверяем еще одно условие, сравнивая символьные строки:
AND letter <= max_letter;
Последний этап в работе оператора SELECT — это формирование списка выра-
жений, которые будут выведены в качестве итоговых данных. Для формирова-
ния номера места используется операция конкатенации «| |», которая соединяет
номер ряда с буквенным обозначением позиции в ряду.
SELECT aircraft_code, seat_row || letter, fare_condition
Итак, SQL-команда, которая позволит за одну операцию ввести в таблицу «Ме-
ста» сразу необходимое число строк, выглядит так:
INSERT INTO seats ( aircraft_code, seat_no, fare_conditions )
-- номер места формируется с помощью конкатенации
-- номера ряда и буквы, обозначающей позицию в ряду
SELECT aircraft_code, seat_row || letter, fare_condition
-- сформируем виртуальную таблицу для всех типов самолетов
-- колонки такие: код самолета, максимальные номера рядов кресел
-- в бизнес-классе и в экономическом классе, максимальный
-- номер кресла в ряду (он обозначается латинской буквой)
FROM (
VALUES ( 'SU9', 3, 20, 'F' ),
( '773', 5, 30, 'I' ),
( '763', 4, 25, 'H' ),
( '733', 3, 20, 'F' ),
( '320', 5, 25, 'F' ),
( '321', 4, 20, 'F' ),
( '319', 3, 20, 'F' ),
( 'CN1', 0, 10, 'B' ),
( 'CR2', 2, 15, 'D' )
186
) AS aircraft_info (
aircraft_code, max_seat_row_business,
max_seat_row_economy, max_letter
)
CROSS JOIN
-- классы обслуживания
( VALUES ( 'Business' ), ( 'Economy' ))
AS fare_conditions ( fare_condition )
Достарыңызбен бөлісу: |