Рекурсивное соединение

Рекурсивное соединение используется для связывания данных внутри одной таблицы. Оно позволяет анализировать взаимосвязи внутри одной и той же таблицы. Этот тип соединения часто применяется для работы с иерархическими структурами, например, для построения дерева сотрудников или анализа цепочки заказов.

Применение рекурсивного соединения в базе данных

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

Создание запроса с рекурсивным соединением

Для создания такого запроса будем использовать таблицу "Заказы" (Orders).

  1. Создайте новый запрос и добавьте в него таблицу "Заказы" (Orders).
  2. Добавьте в запрос копию таблицы, повторно нажав кнопку Добавить (Show Table). Access автоматически присвоит копии имя "Заказы_1". Закройте окно Добавление таблицы (Show Table).
  3. Перетащите поле "ДатаРазмещения" (OrderedDate) из таблицы "Заказы" на поле "ДатаИсполнения" (ShippedDate) таблицы "Заказы_1". Access автоматически создаст соединение (рис. 4.29).

Запрос с рекурсивным соединением

Рис. 4.29. Запрос с рекурсивным соединением

Настройка параметров запроса

  1. Перетащите в бланк запроса поля "КодЗаказа" (OrderID), "КодКлиента" (CustomerID) и "ДатаРазмещения" (OrderedDate) из таблицы "Заказы" в первые три столбца.
  2. Так как рекурсивные соединения могут дублировать данные, задайте вывод только уникальных значений. Для этого дважды щёлкните по свободной области верхней части окна запроса. В открывшемся окне Свойства запроса (Query Properties) установите параметр Уникальные значения (Unique Values) в "Да" (Yes) (рис. 4.30).

Диалоговое окно Свойства запроса

Рис. 4.30. Диалоговое окно Свойства запроса

Сортировка и выполнение запроса

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

Дополнительные возможности рекурсивных соединений

Помимо поиска заказов, принятых и выполненных в один день, рекурсивные соединения могут быть полезны в следующих случаях:

Альтернативные способы работы с иерархическими данными

В Microsoft Access рекурсивные соединения используются редко, так как для работы с иерархическими данными часто применяются альтернативные методы:

Заключение

Рекурсивные соединения позволяют анализировать связи внутри одной таблицы. Однако в Microsoft Access их применение ограничено, так как существуют альтернативные методы обработки таких данных. В большинстве случаев для связи таблиц удобнее использовать традиционные отношения "один-ко-многим" или "многие-ко-многим".