Контрольные вопросы и задания
Остальные виртуальные таблицы создаются аналогичным способом.
Для соединения таблиц используется ключевое слово CROSS JOIN, хотя в дан-
ном случае вместо этого можно было просто поставить запятые.
Как это и бывает всегда, четыре таблицы образуют декартово произведение из
своих строк, а затем на основе условия
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. Эта
операция необходима, т. к. в виртуальной таблице номера рядов представлены
в виде символьных строк, а для выполнения сравнения числовых значений в
данной ситуации нужен целый тип. При написании условного оператора нужно
учесть, что в виртуальной таблице мы указали не количество рядов в бизнес-
классе и экономическом классе, а номера
последних рядов в этих классах. По-
этому возникает конструкция
Достарыңызбен бөлісу: