Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование_Запросов.doc
Скачиваний:
4
Добавлен:
06.11.2018
Размер:
800.26 Кб
Скачать
  1. Технология решения некоторых задач анализа с использованием запросов на выборку1

Задание 13. Проанализировать продажу заказанных товаров (по оплаченным счетам) от начала года до конца заданного месяца. Вывести следующую информацию: № счета, наименование покупателя, наименование товара, оплаченное количество, количество продано, задолженность по продаже.

Общий алгоритм выполнения задания.

Для реализации задания необходимо сконструировать ряд связанных запросов, общая схема решения представлена на Рисунок 25.

Рисунок 25 Общая схема реализации задания 13

Алгоритмы построения запросов.

Запрос 13-1_заказ товаров по оплаченным счетам до конца заданного месяца.

  1. Создать новый запрос. Исходные таблицы — счет, спецификация счета.

  2. Проверить связь по полю № счета.

  3. Вывести поля № счета, код товара, количество по счету, пометка об оплате.

  4. установить группировку записей по полям: код товара, № счета.

  5. Так как в условии задачи указан временной интервал — месяц, необходимо преобразовать значения поля ДАТА ВЫПИСКИ СЧЕТА в месяц выписки счета. Вызвать построитель выражений для нового поля, вставить функцию FORMAT. Ввести аргументы функции: «expr» — ДАТА ВЫПИСКИ СЧЕТА, «fmt» — “mm”. Выражение имеет следующий вид: Format([Счет]![Дата выписки счета];"mm").

  6. В задании отсутствует требование помесячного вывода, следовательно, группировка по месяцу выписки счета не нужна. Но для реализации задания необходимы счета до конца заданного месяца, поэтому: для вновь созданного поля в строке ГРУППОВЫЕ ОПЕРАЦИИ установить признак условие, в строке УСЛОВИЯ ОТБОРА нового поля ввести выражение <=[ввести № месяца]. При запуске запроса будет происходить отбор записей, для которых функция Format возвращает номер месяца меньший или равный введенному с клавиатуры значению. Для данного поля снять флажок ВЫВОД НА ЭКРАН.

  7. Для поля количество по счету в строке ГРУППОВЫЕ ОПЕРАЦИИ необходимо определить функцию SUM и присвоить имя Заказ.

  8. Поле ПОМЕТКА ОБ ОПЛАТЕ может принимать значения ИСТИНА (счет оплачен) или ЛОЖЬ (в противном случае). Для указанного поля в строке ГРУППОВЫЕ ОПЕРАЦИИ установить признак условие. В строке УСЛОВИЯ ОТБОРА вызвать построитель выражений, в окне 1 (см. Рисунок 14) построителя выражений дважды щелкнуть по папке КОНСТАНТЫ и для выбранной папки в окне 3 выбрать константу ИСТИНА. Для данного поля снять флажок ВЫВОД НА ЭКРАН.

  9. Сохранить запрос под именем 13-1_заказ товаров по оплаченным счетам до конца заданного месяца.

  10. Просмотреть результат выполнения запроса.

Бланк запроса представлен на Рисунок 26.

Рисунок 26 Бланк запроса 13-1_заказ товаров по оплаченным счетам до конца заданного месяца задания 13

Запрос 13-2_продажа товаров по оплаченным счетам до конца заданного месяца.

  1. Создать новый запрос. Исходные таблицы — счет, продажа.

  2. Проверить связь по полю № счета. Наличие обеспечит выборку только тех записей из таблицы ПРОДАЖА, для которых значения поля № счета совпадают со значениями соответствующего поля таблицы счет.

  3. Вывести поля № счета (таблица счет), код товара (таблица продажа), количество по счету (таблица продажа), пометка об оплате (таблица счет).

  4. Создать новое поле, содержащее значения месяца продажи (преобразовать поле ДАТА ПРОДАЖИ с использованием команды format), установить ограничения по месяцу (см. п 5, 6 алгоритма запроса 13-1_заказ товаров по оплаченным счетам до конца заданного месяца).

  5. Для поля количество продано в строке ГРУППОВЫЕ ОПЕРАЦИИ задать функцию SUM и присвоить имя Продано.

  6. Для поля пометка об оплате определить условие отбора — ИСТИНА (см. п. 8 алгоритма запроса 13-1_заказ товаров по оплаченным счетам до конца заданного месяца)

  7. Сохранить запрос под именем 13-2_продажа товаров по оплаченным счетам до конца заданного месяца.

  8. Просмотреть результат выполнения запроса.

Бланк запроса представлен на Рисунок 27.

Рисунок 27 Бланк запроса 13-2_продажа товаров по оплаченным счетам до конца заданного месяца задания 13

Запрос 13-3_Анализ продажи товаров.

  1. Создать новый запрос. Исходные запросы 13-1_заказ товаров по оплаченным счетам до конца заданного месяца, 13-2_продажа товаров по оплаченным счетам до конца заданного месяца.

  2. Установить связь по двум полям — № счета, код товара.

  3. При конструировании запроса необходимо предусмотреть возможность полного отсутствия продаж заказанных по некоторым счетам товаров. В такой ситуации информация о заказе определенного товара по определенному № счета (конкретная комбинация значений № счета и код товара) присутствует при просмотре запроса 13-1_заказ товаров по оплаченным счетам до конца заданного месяца, но при просмотре запроса 13-2_продажа товаров по оплаченным счетам до конца заданного месяца отсутствует запись о соответствующей продаже. При существующей связи в исходных структурах будут обрабатываться те записи, для которых комбинация значений № счета и код товара совпадают.

Следовательно, требуется изменить параметры объединения исходных структур. Установить переключатель на пункте: «Объединение всех записей из 13-1_заказ товаров по оплаченным счетам до конца заданного месяца и только тех записей из 13-2_продажа товаров по оплаченным счетам до конца заданного месяца, в которых связанные поля совпадают». Параметры объединения изменить для обоих пар связанных полей.

  1. Вывести поля № счета, код товара, ЗАКАЗ из запроса 13-1_заказ товаров по оплаченным счетам до конца заданного месяца, поле продано из запроса 13-2_продажа товаров по оплаченным счетам до конца заданного месяца.

Внимание! При изменении параметров объединения в окно конструктора запроса выводятся связанные поля из тех структур, для которых предусмотрен выбор всех записей.

  1. Запустить запрос. В режиме просмотра запроса убедиться, что присутствуют записи с пустым значением поля ПРОДАНО (при необходимости ввести в исходные таблицы соответствующие данные). Перейти в режим конструктора запроса.

  2. Для определения задолженности по продажам создать новое поле. Задолженность определяется как разность между заказанным и проданным количеством. В решаемой задаче для записей с пустым значением продано, задолженность будет пустой (вычитание константы NULL дает результат NULL). Чтобы не допустить подобной ситуации, необходимо при помощи функции NZ (или IIF, ISNULL) для поля ПРОДАНО задать преобразование возможных пустых значений в 0.

Для нового поля в окне построителя запросов вывести идентификатор поля ЗАКАЗ запроса 13-1_заказ товаров по оплаченным счетам до конца заданного месяца, поставить оператор «-», вывести функцию NZ с соответствующими аргументами. Выражение имеет следующий вид: [13-1ЗАКАЗ ТОВАРОВ ПО ОПЛАЧЕННЫМ СЧЕТАМ ДО КОНЦА ЗАДАННОГО МЕСЯЦА]![заказ]-nz([13-2_ПРОДАЖА ПО ОПЛАЧЕННЫМ СЧЕТАМ ДО КОНЦА ЗАДАННОГО МЕСЯЦА]![Продано];0). Новому полю присвоить имя Задолженность по продаже.

  1. Сохранить запрос под именем. 13-3_Анализ продажи товаров. Просмотреть результат выполнения запроса.

Внимание! Если при запуске запроса дважды запрашивается месяц конца периода, то проверить параметр [ввести № месяца] в запросах 13-1_заказ товаров по оплаченным счетам до конца заданного месяца, 13-2_продажа товаров по оплаченным счетам до конца заданного месяца. Написание параметра должно точно совпадать.

Бланк запроса представлен на Рисунок 28.

Рисунок 28 Бланк запроса 13-3_Анализ продажи товаров задания 13

Запрос 13-4_Итоговый анализ продаж товаров.

  1. Создать новый запрос. Исходные таблицы/запросы: 13-3_Анализ продажи товаров, Товар, Счет, Покупатель.

  2. Установить необходимые связи.

  3. Вывести поля: № счета (запрос 13-3_Анализ продажи товаров), наименование организации (таблица покупатель), наименование товара (таблица товар), заказ (запрос 13-3_Анализ продажи товаров), продано (запрос 13-3_Анализ продажи товаров), задолженность по продаже (запрос 13-3_Анализ продажи товаров).

  4. Сохранить запрос под именем 13-4_Итоговый анализ продаж товаров. Запустить запрос.

Результат реализации задания 13 представлен в Таблица 3.

Таблица 3

13-4_ИТОГОВЫЙ АНАЛИЗ ПРОДАЖ ТОВАРОВ

Номер счета

Наименование организации

Наименование товара

заказ

Продано

Задолженность по продаже

01

АОЗТ "Луч"

Шампунь "Ворожея"

20

9

11

01

АОЗТ "Луч"

Шампунь "Резонанс"

20

15

5

03

ТОО "Искра"

Бальзам "Блеск"

10

10

03

ТОО "Искра"

Мыло "Детское"

15

15

03

ТОО "Искра"

Шампунь "Золушка"

10

10

04

ТОО "Искра"

Шампунь "Резонанс"

45

45

04

ТОО "Искра"

Мыло "Детское"

20

20

Задание 14. Проанализировать объемы продаж товаров помесячно нарастающим итогом. Вывести следующую информацию: наименование товара, № месяца, объем продаж от начала года.

Нарастающий итог (сумма с накоплением) по месяцам— расчет суммы от начала года до конца указанного месяца по каждой позиции.

Для создания запроса потребуется вспомогательная таблица, где перечислены номера всех существующих месяцев. Структура таблицы представлена на Рисунок 29.

Рисунок 29 Структура таблицы Месяц

Содержание записей таблицы МЕСЯЦ представлено в Таблица 4.

Таблица 4

месяц

№ месяца

наименование

01

январь

02

февраль

03

март

04

апрель

05

май

06

июнь

07

июль

08

август

09

сентябрь

10

октябрь

11

ноябрь

12

декабрь

Общая схема решения представлена на Рисунок 30.

Рисунок 30 Общая схема реализации задания 14

Алгоритм выполнения задания:

Запрос, выводящий информацию о помесячных продажах, был создан в задании 1-11 для самостоятельной работы. Ему было присвоено имя 14-1_продажа по месяцам.

Запрос 14-2_продажа нарастающим итогом.

Общая схема реализации запроса представлена на Рисунок 31.

Рисунок 31 Схема реализации запроса Запрос 14-2_продажа нарастающим итогом

  1. Создать новый запрос. Исходные таблицы/запросы: 14-1_продажа по месяцам, МЕСЯц.

Внимание! Связь между исходными структурами не устанавливать.

  1. Вывести поля Код товара (из запроса 14-1_продажа по месяцам, МЕСЯц), № месяца (из таблицы МЕСЯЦ), месяц продажи (из запроса 14-1_продажа по месяцам), ПРОДАНО (из запроса 14-1_продажа по месяцам).

  2. Установить группировку по полям Код товара, № месяца.

  3. Для поля МЕСЯЦ ПРОДАЖИ в строке УСЛОВИЯ ОТБОРА вызвать построитель выражений и создать следующее условие : <=[месяц]![№ месяца]. В строке ГРУППОВЫЕ ОПЕРАЦИИ данного поля установить признак условие.

  4. Для поля продано в строке ГРУППОВЫЕ ОПЕРАЦИИ задать функцию SUM и присвоить имя Продажа нарастающим итогом.

  5. Для полей КОД ТОВАРА, № МЕСЯЦА в строке сортировка установить признак ПО ВОЗРАСТАНИЮ.

  6. Сохранить запрос под именем 14-2_продажа нарастающим итогом. Просмотреть результат выполнения запроса.

Бланк запроса представлен на рРисунок 32.

Рисунок 32 Бланк запроса 14-2_продажа нарастающим итогом задания 14

Запрос 14-3_ПРОДАЖА НАРАСТАЮЩИМ ИТОГОМ (ИТОГОВЫЙ).

  1. Создать новый запрос. Исходные таблицы/запросы: 14-2_продажа нарастающим итогом, ТОВАР.

  2. Проверить наличие связи по полю код товара.

  3. Вывести поля: НАИМЕНОВАНИЕ ТОВАРА, № МЕСЯЦА, Продажа нарастающим итогом.

  4. Сохранить запрос под именем 14-3_ПРОДАЖА НАРАСТАЮЩИМ ИТОГОМ (ИТОГОВЫЙ). Просмотреть результат выполнения запроса.

Задание 1_13 для самостоятельной работы. Проанализировать выполнение заказов покупателей от начала года до конца заданного месяца. Вывести следующую информацию: наименование организации, стоимость заказанного товара, стоимость проданного товара, стоимость задолженности.

Задание 1_14 для самостоятельной работы. Проанализировать выполнение заказов по продаже товаров за весь период. Вывести следующую информацию: наименование организации, наименование товара, стоимость заказов товара, стоимость продаж товара, стоимость задолженности.

Задание 1_15 для самостоятельной работы. Проанализировать объемы заказа товаров помесячно нарастающим итогом. Вывести следующую информацию: наименование товара, № месяца, объем заказов от начала года (в единицах измерения), стоимость заказов от начала года.

Задание 1_16 для самостоятельной работы. Сделать полный анализ заказов и продаж заданного товара от начала года до конца заданного месяца. Вывести следующую информацию: наименование товара, объем заказов (в единицах измерения), стоимость заказов, объем продаж (в единицах измерения), стоимость продаж. При выполнении задания обратить внимание на допустимость продаж товаров без предварительного заказа (в таблице продажа пустое значение поля № счета).