321
| Airbus A321-200
|
170 |
3
733
| Boeing 737-300
|
130 |
1
763
| Boeing 767-300
|
222 |
2
773
| Boeing 777-300
|
402 |
3
CR2
| Bombardier CRJ-200 |
50 |
1
CN1
| Cessna 208 Caravan |
12 |
1
SU9
| Sukhoi SuperJet-100 |
97 |
1
(9 строк)
Очевидно, что должны быть удалены модели с кодами 319 и 733.
После выполнения запроса получим такое сообщение (это работает предложе-
ние RETURNING *):
--[ RECORD 1 ]-+----------------
aircraft_code | 319
model
| Airbus A319-100
range
| 6700
aircraft_code | 319
model
| Airbus A319-100
seats_num
| 116
rank
| 1
--[ RECORD 2 ]-+----------------
aircraft_code | 733
model
| Boeing 737-300
range
| 4200
aircraft_code | 733
model
| Boeing 737-300
seats_num
| 130
rank
| 1
DELETE 2
Обратите внимание, что были выведены комбинированные строки, получен-
ные при соединении таблицы aircrafts_tmp с временной таблицей aicrafts_seats,
указанной в предложении USING. Но удалены были, конечно, строки из таблицы
aircrafts_tmp.
Задание: предложите другой вариант решения этой задачи. Например, можно
поступить так: оставить предложение WITH без изменений, из команды DELETE
убрать предложение USING, а в предложении WHERE вместо соединения таблиц
использовать подзапрос с предикатом IN для получения списка кодов удаляе-
мых моделей самолетов.
Еще один вариант решения задачи связан с использованием представлений, ко-
торые мы рассматривали в главе 5. В данном случае можно создать представле-
ние на основе таблиц «Самолеты» (aircrafts) и «Места» (seats) и перенести кон-
струкцию с функциями left и strpos в представление. В нем будут вычисляемые
столбцы: company — «Компания — производитель самолетов» и seats_num —
«Число мест».
Достарыңызбен бөлісу: