Глава 6. Запросы
Итак, как мы рассуждали? Если бы в качестве исходных сведений мы получили сразу
код самолета — CN1, то запрос свелся бы к выборке из одной таблицы «Места». Он
был бы таким:
SELECT * FROM seats WHERE aircraft_code = 'CN1';
Но нам дано название модели, а не ее код, поэтому придется подключить к работе и
таблицу «Самолеты» (aircrafts), в которой хранятся наименования моделей. Для
того чтобы решить, удовлетворяет ли строка таблицы seats поставленному условию,
нужно узнать, какой модели самолета соответствует эта строка.
Как это можно узнать? В каждой строке таблицы seats есть атрибут aircraft_code,
такой же атрибут есть и в каждой строке таблицы aircrafts. Если с каждой строкой
таблицы seats соединить такую строку таблицы aircrafts, в которой значение ат-
рибута aircraft_code такое же, как и в строке таблицы seats, то сформированная
комбинированная строка, составленная из атрибутов обеих таблиц, будет содержать
не только номер места, класс обслуживания и код модели, но — что важно — и наиме-
нование модели. Поэтому с помощью условия WHERE можно будет отобрать только
те результирующие строки, в которых значение атрибута model будет «Cessna 208
Caravan».
А какие столбцы оставлять в списке столбцов предложения SELECT, решать нам. Даже
если мы соединяем две таблицы (или более), то совершенно не обязательно в резуль-
тирующий список столбцов включать столбцы всех таблиц, перечисленных в предло-
жении FROM. Мы могли бы оставить только атрибуты таблицы seats:
Достарыңызбен бөлісу: