320
| Airbus A320-200
|
|
0
(9 строк)
В данном запросе используется
левое внешнее соединение
— об этом говорит пред-
ложение LEFT OUTER JOIN. В качестве базовой таблицы выбирается таблица aircrafts,
указанная в запросе слева от предложения LEFT OUTER JOIN, и для каждой строки,
находящейся в ней, из таблицы routes подбираются строки, в которых значение ат-
рибута aircraft_code такое же, как и в текущей строке таблицы aircrafts. Если в табли-
це routes нет ни одной соответствующей строки, то при отсутствии ключевых слов
LEFT OUTER результирующая комбинированная строка просто не будет сформиро-
вана и не попадет в выборку. Но при наличии ключевых слов LEFT OUTER результи-
рующая строка все равно будет сформирована. Это происходит таким образом: если
для строки из левой таблицы (левой относительно предложения LEFT OUTER JOIN) не
находится ни одной соответствующей строки в правой таблице, тогда в результиру-
ющую строку вместо значений столбцов правой таблицы будут помещены значения
NULL. Получается, что для строки из таблицы aircrafts, в которой значение атрибута
aircraft_code равно 320, в таблице routes нет ни одной строки с таким же значением
этого атрибута. В результате при выводе выборки в столбце a_code, взятом из табли-
цы aircrafts, будет значение 320, а в столбце r_code, взятом из таблицы routes, будет
значение NULL. Этот столбец включен в выборку лишь для повышения наглядности,
в реальном запросе он не нужен.
Обратите внимание, что параметром функции count является столбец из таблицы
routes, поэтому count и выдает число 0 для самолета с кодом 320. Если заменить его
на одноименный столбец из таблицы aircrafts, тогда count выдаст 1, что будет проти-
воречить цели нашей задачи — подсчитать число рейсов, выполняемых на самолетах
каждого типа. Напомним, что если функция count в качестве параметра получает не
символ «*», а имя столбца, тогда она подсчитывает число строк, в которых значение
в этом столбце определено (не равно NULL).
Кроме левого внешнего соединения существует также и
Достарыңызбен бөлісу: