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


SELECT a.aircraft_code AS a_code



Pdf көрінісі
бет120/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   116   117   118   119   120   121   122   123   ...   243
Байланысты:
Язык SQL. Базовый курс

SELECT a.aircraft_code AS a_code,
a.model,
r.aircraft_code AS r_code,
count( r.aircraft_code ) AS num_routes
FROM aircrafts a
LEFT OUTER JOIN routes r ON r.aircraft_code = a.aircraft_code
GROUP BY 1, 2, 3
ORDER BY 4 DESC;
a_code |
model
| r_code | num_routes
--------+---------------------+--------+------------
CR2
| Bombardier CRJ-200 | CR2
|
232
CN1
| Cessna 208 Caravan | CN1
|
170
SU9
| Sukhoi SuperJet-100 | SU9
|
158
319
| Airbus A319-100
| 319
|
46
733
| Boeing 737-300
| 733
|
36
321
| Airbus A321-200
| 321
|
32
763
| Boeing 767-300
| 763
|
26
773
| Boeing 777-300
| 773
|
10
121


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).
Кроме левого внешнего соединения существует также и


Достарыңызбен бөлісу:
1   ...   116   117   118   119   120   121   122   123   ...   243




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

    Басты бет