Поиск записей, не имеющих подчиненных
Такой запрос позволяет найти в таблице записи, у которых нет записей в подчинённой таблице.
Пример 16. Получить сведения о предприятиях, которые не произвели оплату.
Удалить из таблицы ПЛАТЕЖИ две записи, которые относятся к предприятию с кодом 103 (Север). Таким образом, данное предприятие не производило выплат. Создать запрос, с помощью которого можно определить неплательщика.
Запрос строим на таблицах ПРЕДПРИЯТИЯ и ПЛАТЕЖИ, последовательно выполняя следующие действия:
· запустим Мастер запросов

· в открывшемся окне выберем из списка «Записи без подчинённых», нажать ОК;

· В окне «Поиск записей, не имеющих подчинённых» выбрать таблицу ПРЕДПРИЯТИЯ, нажать Далее;

· В следующем окне выбрать таблицу ПЛАТЕЖИ, Далее.
· В следующем окне щёлкнуть по кнопке
, затем Далее.
· Выбрать поля: Код предприятияиНаименование предприятия, для чего нажать кнопку
, а затем - Далее.
· Нажать Готово.
· Запрос автоматически получит имя ‘ПРЕДПРИЯТИЯ’ без подчинённых ‘ПЛАТЕЖИ’. В результате получим :

Примечание:восстановить удалённые записи в таблице ПЛАТЕЖИ и СПЕЦИФИКАЦИЯ ПЛАТЕЖЕЙ.
Вычисления нарастающим итогом
Пример 17. Используя сведения о платежах, получить общую оплату по каждому предприятию нарастающим итогом от начала года.
Сначала дополним базу данных таблицей КАЛЕНДАРЬ, где № МЕСЯЦА - ключевое текстовое поле и НАИМЕНОВАНИЕ МЕС - текстовое поле.
| № МЕСЯЦА | НАИМЕНОВАНИЕ МЕСЯЦА |
| Январь | |
| Февраль | |
| Март | |
| Апрель |
Количество месяцев в календаре зависит от того периода, на который вычисляются нарастающие итоги.
Рассмотрим решение задачи по шагам.
Шаг 1. На основе таблиц ПЛАТЕЖИ и СПЕЦИФИКАЦИЯ ПЛАТЕЖЕЙ создадим запрос, в котором преобразуем дату в месяц (числовой) и вычислим суммы выплат каждого предприятия по месяцам.

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

Сохраним запрос под именем Суммы выплат по месяцам.
Шаг 2. На основе предыдущего запроса и таблицы календарь создадим запрос, в котором получим суммы нарастающим итогом.
Объекты не связывать!

Группировка выполняется по предприятиям, а затем по месяцам. В этих группах суммируются Sum-Cумма. Суммируются суммы оплаты при условии, что месяц оплаты <= (меньше или равен) месяцу календаря, то есть в пределах календаря.
При выполнении запроса получим:

Назвать запрос Нарастающие суммы.
Шаг 3. Если сумма в каждом следующем месяце не меняется, то получить итоги по последнему месяцу, в котором произошли изменения. Для этого использовать функцию Min для месяца. Запрос строим на основе предыдущего запроса.

Выполнить запрос:

Присвоить запросу имя Нарастающий итог.