Проверьте, как это работает!
Иногда с помощью запроса требуется просмотреть все записи из одной таблицы вместе с соответствующими записями из другой. Для этого следует создать внешние соединения.
Внутренние соединения отображают данные только при наличии соответствующего идентификатора в обоих подключенных источниках данных. Например, если вы хотите отобразить продукты и количество проданных товаров, создайте внутреннее соединение между таблицами Products и Order Details. При выполнении запроса возвращаются только продукты, которые находятся в заказах и, таким образом, отображаются в обеих таблицах.
Однако при использовании внешних запросов будут возвращаться все данные из одного источника и лишь некоторые из другой таблицы или другого источника данных.
Например, если вам нужно узнать, какие продукты не покупали, вы можете создать запрос, отображающий коды продуктов из таблицы "Продукты" и все соответствующие номера заказов из таблицы "Сведения о заказах". Если для продукта будут отсутствовать совпадающие записи в таблице "Сведения о заказах", будет возвращаться названия товара без номеров заказов.
Левые и правые внешние связи
При использовании внешних связей таблица, из которой отображаются все записи, называется базовой. Таблица, из которой отображаются лишь некоторые (совпадающие) записи, называется вторичной.
В диалоговом окне Параметры объединения описано, что отображается с разными типами соединений.
Предположим, вы создали запрос для отображения продуктов, которые покупали клиенты. В качестве выходных будут использоваться поля "Название продукта", "Номер заказа" и "Количество".
-
Внутреннее соединение. Будут возвращаться только строки (записи), в которых значения соединенных полей из обоих таблиц совпадают, например только продукты, для которых имеются соответствующие заказы.
-
Левое внешнее соединение. Включите все записи из таблицы в поле Имя таблицы слева и только те записи из таблицы в разделе Имя таблицы справа, в которых объединенные поля равны, например все заказы, но только количество и идентификаторы продуктов для тех заказов, с которыми связаны продукты.
-
Правое внешнее соединение. Включите все записи из таблицы в поле Имя таблицы справа и только те записи из таблицы в разделе Имя таблицы слева, в которых объединенные поля равны, например все продукты, даже если для них нет заказов. В этом случае пустые значения отображаются в полях Идентификатор заказа и Количество.
Как видите, довольно важно правильно задать левую и правую таблицы, и их расположение в окне "Параметры объединения" может отличаться от такового в окне запроса. Чтобы понять, какие данные будут выводиться при помощи запроса, внимательно прочитайте текст в диалоговом окне "Параметры объединения".
1. Добавьте источники данных
-
На вкладке Создание нажмите кнопку Конструктор запросов.
Добавьте все необходимые таблицы и запросы в качестве источников данных. (Не волнуйтесь. Если вы забудете один из них, у вас по-прежнему есть возможность добавить дополнительные источники данных позже.)
Если Access обнаружит связи между источниками данных, они отобразятся.
2. Добавьте соединение
-
Если между источниками данных не появились связи, следует создать соединение. Перетащите поле из одного источника данных на необходимое поле из другого. Таблица, из которой вы перетащили поле, в диалоговом окне "Параметры объединения" отобразится слева. По умолчанию Access создаст внутреннее соединение. Если вам требуется внешнее соединение, измените его тип.
3. Изменение соединения
-
Дважды щелкните необходимую линию, изображающую соединение.
-
В диалоговом окне Параметры объединения выберите второй или третий пункт, чтобы создать внешнее соединение. После этого нажмите кнопку ОК.
Внимательно отнеситесь к выбору базовой таблицы, из которой будут отображаться все записи.
4. Выполните запрос
Создайте запрос, как обычно: добавьте выходные поля и необходимые условия, а затем выполните или сохраните запрос. Инструкции см. в статье Создание простых запросов.