Поиск записей, не имеющих подчиненных

 

Такой запрос позволяет найти в таблице записи, у которых нет записей в подчинённой таблице.

 

Пример 16. Получить сведения о предприятиях, которые не произвели оплату.

Удалить из таблицы ПЛАТЕЖИ две записи, которые относятся к предприятию с кодом 103 (Север). Таким образом, данное предприятие не производило выплат. Создать запрос, с помощью которого можно определить неплательщика.

Запрос строим на таблицах ПРЕДПРИЯТИЯ и ПЛАТЕЖИ, последовательно выполняя следующие действия:

· запустим Мастер запросов

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

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

· В следующем окне выбрать таблицу ПЛАТЕЖИ, Далее.

· В следующем окне щёлкнуть по кнопке , затем Далее.

· Выбрать поля: Код предприятияиНаименование предприятия, для чего нажать кнопку , а затем - Далее.

· Нажать Готово.

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

Примечание:восстановить удалённые записи в таблице ПЛАТЕЖИ и СПЕЦИФИКАЦИЯ ПЛАТЕЖЕЙ.

 

Вычисления нарастающим итогом

 

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

 

Сначала дополним базу данных таблицей КАЛЕНДАРЬ, где № МЕСЯЦА - ключевое текстовое поле и НАИМЕНОВАНИЕ МЕС - текстовое поле.

№ МЕСЯЦА НАИМЕНОВАНИЕ МЕСЯЦА
Январь
Февраль
Март
Апрель

 

Количество месяцев в календаре зависит от того периода, на который вычисляются нарастающие итоги.

Рассмотрим решение задачи по шагам.

Шаг 1. На основе таблиц ПЛАТЕЖИ и СПЕЦИФИКАЦИЯ ПЛАТЕЖЕЙ создадим запрос, в котором преобразуем дату в месяц (числовой) и вычислим суммы выплат каждого предприятия по месяцам.

 

 

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

Сохраним запрос под именем Суммы выплат по месяцам.

 

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

Объекты не связывать!

 

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

При выполнении запроса получим:

 

Назвать запрос Нарастающие суммы.

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

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

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