|
WHERE Tl.КОНЕЧНЫЙ_ПУНКТ = Т2.НАЧАЛЬНЫЙ_ПУНКТ;
Рис. 5.5. Таблица достижимости пунктов через один транзитный пункт
Рассмотрим данный запрос более подробно. Сначала он выполняет декартово произведение таблицы Рейсы на эту же таблицу. В результате получается таблица с четырьмя столбцами:
Т1.НАЧАЛЬНЫЙ_ПУНКТ, Т1.КОНЕЧНЫЙ_ПУНКТ, Т2.НАЧАЛЬНЫЙ_ПУНКТ
и Т2.КОНЕЧНЫЙ_ПУНКТ. Затем из полученной таблицы выбираются такие записи, в которых T1.конечный_пункт = Т2.начальный_пункт. Это и есть пары пунктов, между которыми в графе достижимости находится один промежуточный пункт. Наконец, из четырех столбцов выделяются только два:
T1.НАЧАЛЬНЫЙ_ПУНКТ и Т2.КОНЕЧНЫЙ_ПУНКТ.
Запрос, содержащий сведения о том, в какие пункты можно попасть так или иначе, будет рассмотрен в разд. 5.2.2.
Объединение наборов записей (UNION)
Нередко требуется объединить записи двух или более таблиц с похожими структурами в одну таблицу. Иначе говоря, к набору записей, возвращаемому одним запросом, требуется добавить записи, возвращаемые другим запросом. Для этого служит оператор union (объединение):
Запрос1 UNION Запрос2;
При этом в результатной таблице остаются только отличающиеся записи. Чтобы сохранить в ней все записи после оператора union следует написать ключевое слово all.
Например, таблицы Клиенты и Контакты имеют однотипные столбцы Имя и Адрес. Тогда, чтобы пополнить список данных о клиентах сведениями из таблицы Контакты, достаточно выполнить следующий запрос:
SELECT Имя, Адрес FROM Клиенты
UNION
Дата добавления: 2015-07-08; просмотров: 164 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Декартово произведение наборов записей | | | Внешние соединения |