Виды соединений
В зависимости
от решаемых задач соединение между таблицами в запросах может быть нескольких
видов.
Наиболее распространенным
является
внутреннее соединение (эквисоедшение).
Если таблицы связаны
отношением "один-ко-многим", соединения основываются на уникальном
значении поля первичного ключа в одной таблице и значениях поля внешнего ключа
в другой таблице. В результирующее множество запроса попадают все записи из
главной таблицы (таблицы на стороне "один"), для которых имеются соответствующие
записи в подчиненной таблице (таблице на стороне "многие"). Если в
подчиненной таблице записи с заданной величиной отсутствуют, то соответствующие
записи в главной таблице в результирующее множество не включаются. Подобного
рода соединения между таблицами Access создает автоматически, если:
Замечание
"Согласованные типы" в большинстве случаев означают одинаковые типы. Исключением является поле типа Счетчик, которое может иметь размер Длинное целое или Код репликации и может связываться с числовыми полями соответствующего размера.
Результатом
такого запроса являются все записи, значения связанных полей которых в обеих
таблицах совпадают. Другими словами, эквисоединение связывает записи в таблицах
отношением равенства значений связывающих полей.
Для создания
запроса, объединяющего все записи из одной таблицы, и только те записи из второй,
в которых связанные поля совпадают, используют
внешнее соединение.
В
этом случае независимо от того, имеются ли соответствующие записи во второй
таблице, все записи первой попадают в результирующее множество запроса.
Если необходимо
связать данные любым отношением, кроме отношения равенства, используют
соединение
по отношению
или
тэта-соединение).
Соединение по отношению не отображается
в окне
Схема данных
(Relationships) и не выводится в окне Конструктора
запросов.
Для обозначения
внутренних соединений в Access используются зарезервированные слова ANSI SQL
INNER JOIN, а для указания внешних соединений — слова LEFT JOIN или RIGHT JOIN.
Выражение WHERE <поле1>=<поле2> соответствует внутреннему соединению,
a WHERE поле1>поле2 — соединению по отношению (одному из таких соединений).
Для связывания данных в одной таблице применяют рекурсивное соединение. Оно создается путем добавления в запрос копии таблицы (в результате чего Access назначает псевдоним для копии) и связывания полей идентичных таблиц.