Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
ole4ka93
0 / 0 / 0
Регистрация: 22.05.2015
Сообщений: 8
#1

Запрос суммы

30.05.2015, 13:00. Просмотров 951. Ответов 10
Метки нет (Все метки)

Здравствуйте, подскажите пожалуйста как правильно сделать?

У меня есть один запрос, который считает сумму за проживание в номере:
SQL
1
2
3
4
5
6
7
8
9
10
SELECT Номер.Номер, Клиент.Фамилия, Клиент.Имя, Клиент.Отчество,
 [Тип номера].Цена, [Карточка клиента].Дата_приезда, [Карточка клиента].Дата_отъезда,
 [Цена]*([Дата_отъезда]-[Дата_приезда]) AS [Счет за проживание]
FROM [Тип номера]
 INNER JOIN (Номер
 INNER JOIN (Клиент
 INNER JOIN [Карточка клиента]
 ON Клиент.ID_клиента = [Карточка клиента].ID_клиента)
 ON Номер.ID_номера = [Карточка клиента].ID_номера)
 ON [Тип номера].ID_типа_номера = Номер.ID_типа_номера;
И второй запрос, который считает сумму за оказанные услуги:
SQL
1
2
3
4
5
6
7
8
SELECT Клиент.Фамилия, Клиент.Имя, Клиент.Отчество, Услуга.Цена_услуги, Услуга.Название,
 [Оказанная услуга].Количество, [Цена_услуги]*[Количество] AS [Счет за услуги]
FROM Услуга INNER JOIN (Клиент
 INNER JOIN ([Карточка клиента] 
INNER JOIN [Оказанная услуга]
 ON [Карточка клиента].ID_карточки_клиента = [Оказанная услуга].ID_карточки_клиента)
 ON Клиент.ID_клиента = [Карточка клиента].ID_клиента)
 ON Услуга.ID_услуги = [Оказанная услуга].ID_услуги;
Нужно создать третий запрос, в котором считается общая сумма: сумма за проживание + сумма за оказанные услуги. Как реализовать?

Добавлено через 2 минуты
И результат нужно записать в таблицу "Счет клиента", в колонку "Сумма"
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2015, 13:00
Ответы с готовыми решениями:

Запрос с накоплением суммы
Помогите составить запрос, где шло бы накопление суммы значений поле....

Запрос подсчета суммы
у меня аналогичная проблема, и количество в каждом столбце помогло подсчитать!...

Запрос на вывод суммы за месяцы
Есть таблица в которой есть поля probeg и date Как сделать чтобы выводило суммы...

Запрос на расчет суммы по вкладу
Есть запрос, нужно рассчитать сумму на счете, как я понимаю это...

Создать запрос на вычисление суммы (ms ascces, delphi)
Прошу помощи в создании запроса! Первоначально его нужно было создать в делфе,...

10
ltv_1953
Эксперт MS Access
12829 / 5813 / 1111
Регистрация: 21.06.2012
Сообщений: 10,464
30.05.2015, 13:22 #2
Есть Правила раздела, п.4.. Выкладывайте базу. Устраивать угадайку, какая структура таблиц и как они связаны по запросам затруднительно, да и зачем потом править опечатки.
0
ole4ka93
0 / 0 / 0
Регистрация: 22.05.2015
Сообщений: 8
30.05.2015, 13:30  [ТС] #3
База данных
0
Вложения
Тип файла: zip гостиница.zip (397.1 Кб, 4 просмотров)
mobile
Эксперт MS Access
22641 / 12942 / 2662
Регистрация: 28.04.2012
Сообщений: 14,172
30.05.2015, 13:36 #4
Добавьте в оба запроса поле Клиент.ID_клиента для связи клиентов по их ид. А во второй запрос еще [Карточка клиента].ID_номера на случай когда клиент может приехать повторно и заселиться в другом номере. Тогда третий запрос можно сделать таким
SQL
1
2
3
4
SELECT Запрос1.ID_клиента, Запрос1.Фамилия, Запрос1.Имя, Запрос1.Отчество, Запрос1.ID_номера, Запрос1.Дата_приезда
  SUM(Запрос1.[Счет за проживание]+nz(Запрос2.[Счет за услуги], 0)) AS [сумма за проживание]
FROM Запрос1 LEFT JOIN Запрос2 ON Запрос1.ID_клиента=Запрос2.ID_клиента AND Запрос1.ID_номера=Запрос2.ID_номера
GROUP BY Запрос1.ID_клиента, Запрос1.Фамилия, Запрос1.Имя, Запрос1.Отчество, Запрос1.ID_номера, Запрос1.Дата_приезда
Здесь применено соединение LEFT JOIN потому что счет за проживание выставляют всегда, а услуги могут быть и не востребованы клиентом.

Добавлено через 44 секунды
Пока писал и пример появился. Не смотрел...
1
ole4ka93
0 / 0 / 0
Регистрация: 22.05.2015
Сообщений: 8
30.05.2015, 13:37  [ТС] #5
База данных в 2003 Access
0
Вложения
Тип файла: zip гостиница2003.zip (350.9 Кб, 2 просмотров)
ole4ka93
0 / 0 / 0
Регистрация: 22.05.2015
Сообщений: 8
30.05.2015, 13:55  [ТС] #6
В оба запроса добавила ID_клиента и во второй - ID_карточки клиента

Ввела такой запрос:
SQL
1
2
3
4
5
6
7
8
9
10
SELECT Счет за проживание.ID_клиента, Счет за проживание.Фамилия, Счет за проживание.Имя, Счет за проживание.Отчество, 
Счет за проживание.ID_номера, Счет за проживание.Дата_приезда
  
SUM(Счет за проживание.[Счет за проживание]+nz(Счет за оказанные услуги.[Счет за услуги], 0)) AS [Сумма за проживание]
 
FROM Счет за проживание LEFT JOIN Счет за оказанные услуги ON Счет за проживание.ID_клиента=Счет за оказанные услуги.ID_клиента 
AND Счет за проживание.ID_номера=Счет за оказанные услуги.ID_карточки_клиента
 
GROUP BY Счет за проживание.ID_клиента, Счет за проживание.Фамилия, Счет за проживание.Имя, 
Счет за проживание.Отчество, Счет за проживание.ID_номера, Счет за проживание.Дата_приезда
Выдает ошибку
0
Миниатюры
Запрос суммы  
ltv_1953
Эксперт MS Access
12829 / 5813 / 1111
Регистрация: 21.06.2012
Сообщений: 10,464
30.05.2015, 13:56 #7
Лучший ответ Сообщение было отмечено ole4ka93 как решение

Решение

Смотрите запросы на выборку Карточка... и на обновление Счет клиента обновление суммы.
1
Вложения
Тип файла: zip гостиница.zip (335.4 Кб, 4 просмотров)
shanemac51
Модератор
Эксперт MS Access
7800 / 3016 / 429
Регистрация: 07.08.2010
Сообщений: 8,206
Записей в блоге: 1
30.05.2015, 13:58 #8
если в имени таблицы или поля есть пробелы, то такое имя заключается в квадратные скобки
1
mobile
Эксперт MS Access
22641 / 12942 / 2662
Регистрация: 28.04.2012
Сообщений: 14,172
30.05.2015, 13:58 #9
ole4ka93, имена с пробелами должны быть в прямых скобках: [Счет за проживание] и [Счет за оказанные услуги]
1
shanemac51
Модератор
Эксперт MS Access
7800 / 3016 / 429
Регистрация: 07.08.2010
Сообщений: 8,206
Записей в блоге: 1
30.05.2015, 14:02 #10
SQL
1
2
3
4
5
6
7
8
9
SELECT [Счет за проживание].ID_клиента, [Счет за проживание.Фамилия], [Счет за проживание.Имя], [Счет за проживание].Отчество, [Счет за проживание].ID_номера, [Счет за проживание].Дата_приезда
  
SUM([Счет за проживание].[Счет за проживание]+nz([Счет за оказанные услуги].[Счет за услуги], 0)) AS [Сумма за проживание]
 
FROM [Счет за проживание] LEFT JOIN [Счет за оказанные услуги] ON [Счет за проживание].ID_клиента=[Счет за оказанные услуги].ID_клиента 
AND [Счет за проживание].ID_номера=[Счет за оказанные услуги].ID_карточки_клиента
 
GROUP BY [Счет за проживание].ID_клиента, [Счет за проживание].Фамилия, [Счет за проживание.Имя, 
[Счет за проживание].Отчество, [Счет за проживание].ID_номера,[ Счет за проживание].Дата_приезда
1
ole4ka93
0 / 0 / 0
Регистрация: 22.05.2015
Сообщений: 8
30.05.2015, 14:25  [ТС] #11
Всем большое спасибо!!!
0
30.05.2015, 14:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2015, 14:25

Запрос: подсчёт суммы заказа и вывод итога в поле
Добрый вечер. Нужна помощь с подсчётом суммы заказа. Даны для этого две...

Запрос в БД Access бд подсчёта общего объёма и суммы затрат на топливо
Здравствуйте. Помогите студенту решить задачку. Есть База Данных и вот что...

БД "Автосервис". Запрос для расчета общей суммы стоимостей услуг и деталей
Есть база данных автосервис, в таблице заказ есть поле "общ стоимость", в нем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru