Цель: Освоить технологию создания сложных запросов, использующих в качестве источника записей один или несколько запросов, а также научиться создавать вычисляемые поля со сложным алгоритмом построения выражения.
Условие задания:
Создать в базе данных УБ_СУБД.Mdb запросы для решения поставленных задач (каждый запрос должен быть сохранен под именем ЛР_10_<номер запроса>, например ЛР_10_01):
Номер
запроса |
Постановка задачи |
01 | Определить количество неисполненных заказов и их стоимость с учетом скидки, но без учета стоимости доставки |
Порядок создания запроса:
При первоначальном рассмотрении постановки задачи может показаться, что для ее решения достаточно создать групповой запрос на основе таблиц Заказы и Заказано со структурой представленной на рис.10.1 и получить результат, представленный на рис.10.2.
Рис.10.1. Запрос на выборку к заданию ЛР_10_01
в режиме Конструктор (неверное решение)
Для проверки правильности полученного результата, разобьем задачу на две подзадачи и решим их независимо.
Задача 1. Определить количество неисполненных заказов
(а) (б)
Рис.10.3. Запрос для решения Задачи1:
(а) в режиме Конструктора, (а) в режиме Таблицы
Задача 2. Определить сумму неисполненных заказов с учетом скидки, но без учета стоимости доставки.
(а) (б)
Рис.10.4. Запрос для решения Задачи 2:
(а) в режиме Конструктора, (а) в режиме Таблицы
Сумма заказов вычислена верно, а количество заказов – нет.
Ошибка в результате (см. рис.10.2) происходит в связи с тем, что на самом деле подсчитывается не количество заказов, а количество строк с заказанными товарами из таблицы Заказано.
Для решения поставленной задачи можно использовать несколько способов.
Способ 1. Создать групповой запрос, определяющий общую стоимость каждого неисполненного заказа, а затем, используя его в качестве источника записей для другого группового запроса определить общую стоимость всех заказов и их количество.
Способ 2. Создать групповой запрос, определяющий общую стоимость неисполненных заказов и их количество (для вычисления количества неиспользованных заказов используется подчиненный запрос).
На рис.10.5 и 10.6 приведен пример решения задачи вторым способом.
Рис.10.5. Запрос ЛР_10_01 в режиме Конструктор
Рис.10.5. Запрос ЛР_10_01 в режиме Таблице
Номер
запроса
Постановка задачи
02
Определить общую стоимость заказов по декадам (1 декада – с 1 по 10 число, 2 декада – с 11 по 20 число, 3 декада – с 21 по последний день месяца), с учетом скидки, без учета стоимости доставки, исполненных в 1997 году.
Рис.10.6. Запрос ЛР_10_02 в режиме Конструктор
ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ
К ЛАБОРАТОРНОЙ РАБОТЕ №10
Цель: Закрепить навыки по созданию сложных запросов.
Условие задания:
Создать в базе данных УБ_СУБД.Mdb запросы для решения поставленных задач (каждый запрос должен быть сохранен под именем ЛР_10_СР_<номер запроса>, например ЛР_10_СР_01):
Номер
запроса
Постановка задачи
01
Определить, кто из сотрудников фирмы «Борей» оформлял в 1998 году заказы, которые не были исполнены, сколько таких заказов и какова их стоимость, с учетом скидки и без стоимости доставки
Номер
запроса
Постановка задачи
02
Определить сумму комиссионных, полученную каждым сотрудником фирмы «Борей» в 1997 году. Комиссионные начислялись ежемесячно от суммы исполненных заказов, с учетом скидки и без стоимости доставки: 1% – сумма заказов меньше 10 000, 1,5% – сумма заказов меньше 40 000, 1,7% – сумма заказов меньше 100 000., 2% – сумма заказов от 100 000 и выше.
Литература:
Лекция 5. Запросы.
Лекция 6. Запросы. Вычисления и групповые операции.
Лекция 7. Запросы. Модификация данных.
Лекция 8. Запросы. SQL – запросы.
Хомоненко А. Д., Цыганков В. М., Мальцев М. Г. Базы данных: Учебник для высших учебных заведений / Под. ред. проф. А. Д. Хомоненко. – Издание второе, дополненное и переработанное – СПб.: КОРОНА принт, 2002 [С80 – 94, С292 – 295].
Савицкий Н. И. Технология организации, хранения и обработки данных: Учебн. пособие. – М.: ИНФРА-М, 2001 [С116–132].
Практикум по экономической информатике: Учеб. пособие: В 3-х ч. – Ч. I / Под ред. Е. Л. Шуремова, Н. А. Тимаковой, Е. А. Мамонтовой. – М.: Финансы и статистика; Перспектива, 2002 [С258 – 268].
Харитонова И. А., Михеева В. Д. Microsoft Access 2000. – СПб.: БХВ – Санкт-Петербург, 1999 [С199-235, С342-388].