Составители:
Рубрика:
5.1.5. Самообъединение таблиц
В ряде задач возникает необходимость одновременной обработки данных какой-
либо таблицы и одной или нескольких ее копий, создаваемых на время выполнения
запроса. Самообъединение – объединение таблицы с этой же таблицей – является другим
вариантом объединения таблиц на основе операции эквисоединения. В этом случае
сравниваются значения внутри столбца одной таблицы.
Например, требуется узнать, какие
сотрудники (фамилии и их имена) проживают
во Фрунзенском районе и имеют одинаковые почтовые индексы. Поскольку в этом
запросе таблица СОТРУДНИК (рис. 2.1) выступает в двух ролях, она будет объединяться
сама с собой (в таблице СОТРУДНИК значению атрибута Район "Фрунзенский"
соответствует сокращенное "Фрун").
Для различения этих ролей в списке таблиц ей необходимо
назначить два разных
псевдонима. Пусть имена этих псевдонимов будут С1 и Копия соответственно
SELECT С1.Фамилия, С1.Имя, C1.Индекс
FROM Сотрудник С1, Сотрудник Копия
WHERE С1.Район = "Фрун"
AND С1.Индекс = Копия.Индекс;
В результате выполнения указанных операторов получим таблицу (рис.5.9),
содержимое которой хотя бы по объему (в реальной ситуации) может быть
значительным
.
Поэтому уберем повторяющиеся строки (рис. 5.10), используя ключевое слово
DISTINCT (вспомните алгебраическую операцию проекции, которая выполняет
аналогичную работу) в исходном описании запроса:
SELECT DISTINCT С1.Фамилия, С1.Имя, C1.Индекс
FROM Сотрудник С1, Сотрудник Копия
WHERE С1.Район = "Фрун"
AND С1.Индекс = Копия.Индекс;
Страницы
- « первая
- ‹ предыдущая
- …
- 109
- 110
- 111
- 112
- 113
- …
- следующая ›
- последняя »
