Рекурсивное
соединение
В качестве
примера рекурсивного соединения рассмотрим запрос к базе данных "Борей"
(Northwind), в котором выводятся заказы клиентов, принятые и выполненные в один
день.
Для создания
такого запроса мы будем использовать таблицу "Заказы" (Orders):
-
Создайте новый запрос
и добавьте в него таблицу "Заказы".
-
Добавьте в запрос копию
таблицы, повторно нажав кнопку
Добавить
(Show Table). Access присваивает
копии имя "Заказы_1". Закройте диалоговое окно
Добавление таблицы
(Show Table).
-
Перетащите поле "ДатаРазмещения"
(OrderedDate) исходной таблицы "Заказы" на поле "ДатаИсполнения"
(ShippedDate) таблицы "Заказы_1". Между таблицами возникает соединение
(рис. 4.29).
-
Перетащите поля "КодЗаказа"
(Orderld), "КодКлиента" (Customerld) и "ДатаРазмещения"
(OrderedDate) таблицы "Заказы" в первые три столбца бланка запроса
соответственно.
Рис. 4.29.
Запрос с рекурсивным соединением
-
При использовании рекурсивных
соединений требуется задать вывод только уникальных значений. Дважды щелкните
по свободной области верхней части окна запроса, а затем в диалоговом окне
Свойства запроса
(Query Properties) установите значение Да (Yes) для
свойства
Уникальные значения
(Unique Values) (рис. 4.30). Закройте
окно
Свойства запроса
(Query Properties).
-
Установите сортировку
по убыванию для поля "ДатаИсполнения" (ShippedDate), чтобы последние
обслуженные заказы были отображены первыми.
-
Нажмите кнопку
Запуск
(Run) и вы должны получить таблицу заказов, в которых дата размещения
и выполнения заказа является одинаковой.
Рис. 4.30.
Диалоговое окно
Свойства запроса
Рекурсивные
соединения крайне редко используются в приложениях Access благодаря возможности
задания ограничений значений и обеспечению целостности данных.