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


явное использование декартова произведения



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

явное использование декартова произведения
таблиц
. Для этого служит предложение CROSS JOIN. Лишние строки, как и в первом
варианте, отсеиваем с помощью предложения WHERE:
SELECT count( * )
FROM airports a1 CROSS JOIN airports a2
WHERE a1.city <> a2.city;
count
-------
10704
(1 строка)
120


С точки зрения СУБД эти три варианта эквивалентны, они отличаются лишь синтак-
сисом. Для них PostgreSQL выберет один и тот же план (порядок) выполнения запро-
са.
Теперь обратимся к так называемым
внешним соединениям
. Предположим, что
мы задались вопросом: сколько маршрутов обслуживают самолеты каждого типа? Ес-
ли не требовать вывода наименований моделей самолетов, тогда всю необходимую
информацию можно получить из материализованного представления «Маршруты»
(routes). Но мы все же будем выводить и наименования моделей, поэтому обратим-
ся также к таблице «Самолеты» (aircrafts). Соединим эти таблицы на основе атрибута
aircraft_code, сгруппируем строки и просто воспользуемся функцией count. В этом за-
просе внешнее соединение еще не используется.
SELECT r.aircraft_code, a.model, count( * ) AS num_routes
FROM routes r
JOIN aircrafts a ON r.aircraft_code = a.aircraft_code
GROUP BY 1, 2
ORDER BY 3 DESC;
aircraft_code |
model
| num_routes
---------------+---------------------+------------
CR2
| Bombardier CRJ-200 |
232
CN1
| Cessna 208 Caravan |
170
SU9
| Sukhoi SuperJet-100 |
158
319
| Airbus A319-100
|
46
733
| Boeing 737-300
|
36
321
| Airbus A321-200
|
32
763
| Boeing 767-300
|
26
773
| Boeing 777-300
|
10
(8 строк)
Обратите внимание, что в таблице «Самолеты» (aircrafts) представлено 9 моделей, а в
этой выборке лишь 8 строк. Значит, какая-то модель самолета не участвует в выпол-
нении рейсов. Как ее выявить? С помощью такого запроса:


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




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

    Басты бет