Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Разработка второго запроса




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

· Построить запрос находящий стоимости заказов (1 базовый запрос);

· Построить запрос, вычисляющий полные суммы оплаты по заказам (2 базовый запрос);

· На основании предыдущих запросов построить запрос, находящий заказы, отвечающие условию:

«Полная сумма оплаты» <= «Сумма стоимости заказа»

Вид первого из них приведен на рисунке ниже. Для того чтобы получить стоимость каждого заказа, нужно в запросе включить функцию группировки (позиция «Группировка» в пункте меню «Вид») и установить способы группировки, как показано на рисунке ниже.

 

 

Формирование выражения стоимости в позиции поля производится с помощью построителя выражений как показано ниже.

 

 

Выполнение запроса даст следующий результат:

 

 

SQL выражение для запроса выглядит так:

SELECT Клиенты.Организация, Заказ.[Номер заказа], Sum([Цена]*[Количество]*(1+[Наценка]-[Скидка])) AS Стоимость

FROM Клиенты INNER JOIN (Заказ INNER JOIN Спецификация ON Заказ.[Номер заказа] = Спецификация.[Номер заказа]) ON Клиенты.[Код клиента] = Заказ.[Код клиента]

GROUP BY Клиенты.Организация, Заказ.[Номер заказа];

 

Аналогично строится и второй базовый запрос

 

Результат его будет таким:

 

А SQL выражение будет следующим:

SELECT Оплата.[Номер заказа], Sum(Оплата.[Сумма оплаты]) AS [Sum-Сумма оплаты]

FROM Оплата

GROUP BY Оплата.[Номер заказа];

Сравнивая результаты выполнения запросов видим, что среди оплаченных нет 6 и 7 заказов. То есть в итоговом запросе придется объединять базовые запросы по принципу изложенному при построении первого запроса.

И, наконец, третий итоговый запрос позволяющий проанализировать оплату заказов выглядит так:

 

 

Отклонение: [Суммы заказов]![Стоимость] - Nz([Суммы оплаты заказов]![Sum-Сумма оплаты])

Функция Nz используется для того, чтобы перевести возможные значения Null находящиеся в поле Sum-Сумма оплаты в обычный 0, потому что в СУБД Access со значением Null арифметические операции не выполняются. Результат выполнения запроса представлен ниже.

 

 

Он показывает общую картину состояния оплаты заказов и может быть использован для анализа ситуации. Если этот запрос будет использоваться регулярно, то имеет смысл построить отчет, в котором результат выполнения запроса будет представлен в виде документа. Построение отчета будет рассмотрено ниже. SQL выражение для этого запроса будет таким:

SELECT [Суммы заказов].Организация, [Суммы заказов].[Номер заказа], [Суммы заказов].Стоимость, [Суммы оплаты заказов].[Sum-Сумма оплаты], [Суммы заказов]!Стоимость-Nz([Суммы оплаты заказов]![Sum-Сумма оплаты]) AS Отклонение

FROM [Суммы заказов] LEFT JOIN [Суммы оплаты заказов] ON [Суммы заказов].[Номер заказа] = [Суммы оплаты заказов].[Номер заказа];

 

В приведенном выше описании достаточно подробно были разобраны варианты построения первого и второго запросов. Для оставшихся двух будут приведены итоговые формы QBE и SQL выражений.





Поделиться с друзьями:


Дата добавления: 2016-11-12; Мы поможем в написании ваших работ!; просмотров: 397 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Начинайте делать все, что вы можете сделать – и даже то, о чем можете хотя бы мечтать. В смелости гений, сила и магия. © Иоганн Вольфганг Гете
==> читать все изречения...

2285 - | 2070 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.