Учебно-практическое пособие москва 2017 ббк


FROM ( VALUES ( 'SU9', 3, 20, 'F' )



Pdf көрінісі
бет180/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   176   177   178   179   180   181   182   183   ...   243
Байланысты:
Язык SQL. Базовый курс

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' )
)
AS aircraft_info (
aircraft_code, max_seat_row_business,
max_seat_row_economy, max_letter
)
Здесь aircraft_info определяет имя виртуальной таблицы, а aircraft_code,
max_seat_row_business, max_seat_row_economy, max_letter — имена ее атрибутов.
Эти атрибуты можно использовать во всех частях команды SELECT, как если бы
это были атрибуты обычной таблицы.
Остальные виртуальные таблицы создаются аналогичным способом.
Для соединения таблиц используется ключевое слово CROSS JOIN, хотя в данном
случае вместо этого можно было просто поставить запятые.
185


Как это и бывает всегда, четыре таблицы образуют декартово произведение из
своих строк, а затем на основе условия WHERE «лишние» строки отбрасывают-
ся. В этом условии используется условный оператор CASE. Он позволяет нам
поставить допустимый номер ряда в зависимость от класса обслуживания:
WHERE
CASE WHEN fare_condition = 'Business'
THEN seat_row::integer <= max_seat_row_business
WHEN fare_condition = 'Economy'
THEN seat_row::integer > max_seat_row_business
AND seat_row::integer <= max_seat_row_economy
В этом выражении используется операция приведения типа: seat_row::integer.
Она необходима, т. к. в виртуальной таблице номера рядов представлены в ви-
де символьных строк, а для выполнения сравнения числовых значений в данной
ситуации нужен целый тип. При написании условного оператора нужно учесть,
что в виртуальной таблице мы указали не количество рядов в бизнес-классе и
экономическом классе, а номера
последних
рядов в этих классах. Поэтому воз-
никает конструкция


Достарыңызбен бөлісу:
1   ...   176   177   178   179   180   181   182   183   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет