Манипулирование данными. Языка описания запросов QBE. Создание (формирование) запросов в Mіcrosoft Access, страница 2

Поле запроса может быть вычислимым – задается выражение с помощью построителя выражений. Имена полей таблиц (запросов) заключаются в квадратные скобки. Символ ! отделяет имя таблицы от имени поля. Символ точка отделяет имя объекта от имени его свойства.

Запрос может применяться к нескольким связанным таблицам. Многотабличные запросы являются запросами с внутренним (естественным) соединением. Параметры соединения (объединения) можно изменить в окне диалога, вызываемого контекстным меню к линии соединения таблиц в схеме данных (а также командой меню ВИД). Можно выбрать левое или правое внешнее соединение.

Для связи можно потребовать автоматической поддержки целостности данных. В этом случае контролируется удаление и обновление данных. Удаление записи в родительской таблице вызовет удаления связанных записей в подчиненных. Изменение внешнего индекса приведет к изменению связанных полей. Можно установить запрет на удаление записей главной таблицы или изменение внешнего ключа при наличии связанных записей в подчиненной таблице. (В форме Join нельзя изменить поле № Заказа, т.к. заданы соответствующие характеристики связи таблиц Client, Customs.)

В ходе диалога мастера, кнопки ленты Итоги вкладка Конструктор (команды Групповые операции меню ВИД в версии 2003) можно получить запрос с обобщением (обобщающий запрос). В бланке QBE появится строка "Групповая операция", где в каждой колонке установлено по умолчанию "Группировка". Записи по каждому полю будут группироваться, но итог подводиться не будет. Для выведения итоговых значений необходимо вместо слова "Группировка" установить какую-нибудь групповую операцию. Нередко для расчета итогов используются вычислимые поля. Итоговые запросы включают поля (поля), по которым записи группируются, и числовое поле для расчета итога выбранной групповой операций.

Примечание. Колонкам запроса можно назначать псевдонимы (см. запросы Итог… база JOIN). Если в таблице задано свойство некоторого поля Подпись, то другой псевдоним для этого поля применить нельзя.

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

Рекурсивное соединение (самообъединение) применяется в тех случаях, когда запись таблицы имеет поля ссылающие на другие записи. Примером может служить таблица ШТАТНОЕ РАСПИСАНИЕ, которая содержит поле, ссылающиеся на начальника сотрудника. Таким способом в реляционном отношении можно описать иерархические связи.

Чтобы создать рекурсивное соединение следует открыть в окне запроса таблицу и ее копию и определить связь между полями. Далее следует определить запрос на выборку.

Аналогичный пример, когда таблица ЗАКАЗЫ содержит поля ДАТА_ЗАКАЗА и ДАТА_ИСПОЛНЕНИЯ, которые также можно связать для поиска заказов, исполненных в день заказа.

Однако рекурсивное соединение имеет ограниченные возможности. Например, не удается построить рекурсивного запроса, чтобы получить список клиентов, не сделавших ни одного заказа за указанный месяц (см. таблицу Client). Тем не менее, можно создать запрос к таблице Client, а затем в новом запросе связать его с таблицей левым соединением для решения поставленной задачи (см. запрос Client-no-Mounth).

Фактически имеет место рекурсивная выборка:

SELECT DISTINCT Clients.Name, Clients_Mounth.Name

FROM Clients LEFT JOIN Clients_Mounth ON Clients.Name = Clients_Mounth.Name

WHERE (((Clients_Mounth.Name) Is Null));

где Clients_Mounth определен, как

SELECT DISTINCT Clients.Name

FROM Clients

WHERE (((Month([Clients!DateCustom]))=[Укажите номер месяца])).

Параметрический запрос

Параметрический запрос строится по запросу на выборку. При выполнении запроса отображается окно/окна диалога, в которое пользователь вводит значение/значения параметра запроса.