Замечание. Традиционно термин JOIN, который применяется к операции соединения таблиц, переводился как "объединение"
Традиционно термин JOIN, который применяется к операции соединения таблиц, переводился как "объединение", хотя на самом деле операция объединения таблиц — это UNION, которая позволяет объединить все записи из одной таблицы и все записи из другой, а потом удалить дублирующиеся записи. Тем не менее, при локализации диалоговых окон Access по-прежнему, как мы видим, используется термин "объединение" по отношению к операции JOIN.
5. Задайте левое внешнее соединение, выбрав значение "2". Нажмите кнопку ОК для закрытия диалогового окна. При этом на конце линии соединения появится стрелка в сторону таблицы "многие", что указывает на левое внешнее соединение (рис. 4.27).
Рис. 4.27. Отображение левого внешнего объединения в окне Конструктора запросов
6. Установите сортировку по возрастанию для поля "КодЗаказа" (Orderld) во втором столбце бланка запроса.
7. Нажмите на панели инструментов кнопку Запуск(Run) для вывода результирующего множества запроса с левым внешним -соединением (рис. 4.28). Количество записей стало равно 832, и первые две записи содержат пустое поле "КодЗаказа".
Рис. 4.28. Результат выполнения запроса с левым внешним соединением
8. Сохраните запрос под именем "Холодные клиенты". Он нам потребуется в дальнейшем. Запросы с правым внешним соединением используются гораздо реже, т. к., если при составлении схемы данных для связи между таблицами установлена ссылочная целостность (см. раздел "Обеспечение целостности данных" гл. 2), записей в таблице "многие" (подчиненной), не связанных с записями в таблице "один" (главной), просто не может не быть.
Рекурсивное соединение
В качестве примера рекурсивного соединения рассмотрим запрос к базе данных "Борей" (Northwind), в котором выводятся заказы клиентов, принятые и выполненные в один день.
Для создания такого запроса мы будем использовать таблицу "Заказы" (Orders):
1. Создайте новый запрос и добавьте в него таблицу "Заказы".
2. Добавьте в запрос копию таблицы, повторно нажав кнопку Добавить(Show Table). Access присваивает копии имя "Заказы_1". Закройте диалоговое окно Добавление таблицы(Show Table).
3. Перетащите поле "ДатаРазмещения" (OrderedDate) исходной таблицы "Заказы" на поле "ДатаИсполнения" (ShippedDate) таблицы "Заказы_1". Между таблицами возникает соединение (рис. 4.29).
4. Перетащите поля "КодЗаказа" (Orderld), "КодКлиента" (Customerld) и "ДатаРазмещения" (OrderedDate) таблицы "Заказы" в первые три столбца бланка запроса соответственно.
Рис. 4.29. Запрос с рекурсивным соединением
5. При использовании рекурсивных соединений требуется задать вывод только уникальных значений. Дважды щелкните по свободной области верхней части окна запроса, а затем в диалоговом окне Свойства запроса(Query Properties) установите значение Да (Yes) для свойства Уникальные значения(Unique Values) (рис. 4.30). Закройте окно Свойства запроса(Query Properties).
6. Установите сортировку по убыванию для поля "ДатаИсполнения" (ShippedDate), чтобы последние обслуженные заказы были отображены первыми.
7. Нажмите кнопку Запуск(Run) и вы должны получить таблицу заказов, в которых дата размещения и выполнения заказа является одинаковой.
Рис. 4.30. Диалоговое окно Свойства запроса
Рекурсивные соединения крайне редко используются в приложениях Access благодаря возможности задания ограничений значений и обеспечению целостности данных.
Дата добавления: 2015-06-10; просмотров: 783;