Внешнее соединение

Внешние соединения бывают двух видов: левое (LEFT JOIN) и правое (RIGHT JOIN).

Пример использования левого внешнего соединения

Рассмотрим создание запроса, который обнаруживает клиентов, не сделавших ни одного заказа, в базе данных "Борей" (Northwind).

  1. Создайте новый запрос и добавьте в него таблицы "Клиенты" (Customers) и "Заказы" (Orders). Так как эти таблицы связаны отношением "один-ко-многим", между ними автоматически появится соединительная линия.
  2. Добавьте в бланк запроса поле "Название" (CompanyName) из таблицы "Клиенты" и поле "КодЗаказа" (OrderID) из таблицы "Заказы".
  3. Выполните запрос и посмотрите, сколько записей возвращается — 830.
  4. Переключитесь в режим Конструктора. Щёлкните правой кнопкой на линии соединения таблиц и выберите Параметры объединения (Join Properties). Откроется диалоговое окно (рис. 4.26).

Диалоговое окно Параметры объединения

Рис. 4.26. Диалоговое окно Параметры объединения

Настройка типа соединения

В окне Параметры объединения можно выбрать тип соединения:

Замечание

Термин JOIN в SQL традиционно переводился как "объединение", хотя на самом деле операция объединения таблиц — это UNION. Однако в русскоязычной версии Microsoft Access термин "объединение" продолжает использоваться в отношении операции JOIN.

Применение левого внешнего соединения

  1. Выберите значение "2", чтобы установить левое внешнее соединение, и нажмите ОК. В окне Конструктора запроса появится стрелка на линии соединения, указывающая на таблицу "многие", что означает LEFT JOIN (рис. 4.27).

Отображение левого внешнего соединения в Конструкторе

Рис. 4.27. Отображение левого внешнего соединения в Конструкторе

Выполнение запроса и просмотр результата

Теперь необходимо выполнить запрос и просмотреть его результат:

  1. Установите сортировку по возрастанию для поля "КодЗаказа" (OrderID) во втором столбце бланка запроса.
  2. Нажмите кнопку Запуск (Run) на панели инструментов, чтобы вывести результирующее множество запроса.

После выполнения запроса Microsoft Access отобразит таблицу с результатами (рис. 4.28). Обратите внимание, что количество записей увеличилось до 832, и первые две записи содержат пустые значения в поле "КодЗаказа", что означает, что эти клиенты не сделали ни одного заказа.

Результат выполнения запроса с левым внешним соединением

Рис. 4.28. Результат выполнения запроса с левым внешним соединением

Сохранение запроса

  1. Сохраните запрос под именем "Холодные клиенты" (Inactive Customers). Он пригодится в дальнейшем.

Использование правого внешнего соединения

Запросы с правым внешним соединением (RIGHT JOIN) применяются гораздо реже. Это связано с тем, что при включённой ссылочной целостности (см. раздел "Обеспечение целостности данных" в главе 2) в подчинённой таблице не может быть записей, которые не связаны с главной таблицей.