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


соединения таблицы с самой собой



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

соединения таблицы с самой собой
, отличающиеся синтак-
сически, но являющиеся функционально эквивалентными. Наш запрос-иллюстрация
должен выяснить: сколько всего маршрутов нужно было бы сформировать, если бы
требовалось соединить каждый город со всеми остальными городами? Если в городе
119


имеется более одного аэропорта, то договоримся рейсы из каждого из них (в каждый
из них) считать отдельными маршрутами. Поэтому правильнее было бы говорить не
о маршрутах из каждого города, а о маршрутах из каждого аэропорта во все другие
аэропорты. Конечно, рейсов из любого города в тот же самый город быть не долж-
но.
Первый вариант запроса использует обычное перечисление имен таблиц в предложе-
нии FROM. Поскольку имена таблиц совпадают, используются псевдонимы. В таком
случае СУБД обращается к таблице дважды, как если бы это были различные табли-
цы.
SELECT count( * )
FROM airports a1, airports a2
WHERE a1.city <> a2.city;
Как мы уже говорили ранее, СУБД соединяет каждую строку первой таблицы с каж-
дой строкой второй таблицы, т. е. формирует
декартово произведение
таблиц — все
попарные комбинации строк из двух таблиц. Затем СУБД отбрасывает те комбини-
рованные строки, которые не удовлетворяют условию, приведенному в предложении
WHERE. В нашем примере условие как раз и отражает требование о том, что рейсов
из одного города в тот же самый город быть не должно.
count
-------
10704
(1 строка)
Во втором варианте запроса мы используем
соединение таблиц на основе нера-
венства значений атрибутов
. Тем самым мы перенесли условие отбора результи-
рующих строк из предложения WHERE в предложение FROM.
SELECT count( * )
FROM airports a1
JOIN airports a2 ON a1.city <> a2.city;
count
-------
10704
(1 строка)
Третий вариант предусматривает


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




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

    Басты бет