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