powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Группировка запроса
9 сообщений из 9, страница 1 из 1
Группировка запроса
    #39937948
qpbdqp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер. Подскажите как усовершенствовать запрос группировки для access.
Есть такой запрос ниже. Нужно сгруппировать его по ClientID

SELECT qdfInvoices.ClientID, tblMain.Client, SUM(qdfInvoices.InvoiceAmount), IIf(IsNull(TotalPaymentAmount),0,TotalPaymentAmount) AS TotalPaymentCalc, InvoiceAmount - TotalPaymentCalc AS DolgCalc
FROM (qdfInvoices LEFT JOIN qdfPaymentsByInvoices ON qdfInvoices.MyID = qdfPaymentsByInvoices.InvoiceNumber) LEFT JOIN tblMain ON qdfInvoices.ClientID = tblMain.MyID GROUP BY qdfInvoices.ClientID, tblMain.Client

Ошибка: попытка выполнить запрос, который не включает указанное выражение 'IIf(IsNull(TotalPaymentAmount),0,TotalPaymentAmount)' как часть статистической функции или группы.
...
Рейтинг: 0 / 0
Группировка запроса
    #39937959
Если в запросе есть группировка по некоторым полям, то к остальным полям должна применяться статистическая функция (Sum, Min, Max, First, Last), о чем вам и сообщено.
...
Рейтинг: 0 / 0
Группировка запроса
    #39937971
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qpbdqp,
Судя по имени поля[clientID]-ключ. (так ли это)
А как Вы себе представляете группировку по ключу-(другое дело по полю со стороны М в этой связи. О какой сумме может идти речь если существует только ОДНА запись для каждого значения [clientID])
...
Рейтинг: 0 / 0
Группировка запроса
    #39938121
qpbdqp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ClientID судя по всему и правда первичный ключ. Но он повторяется и я если честно думал сгруппировать по нему. Не знал что не получится. Я, если честно, не знаю что значит сторона М. Возможно поле tblMain.Client?
...
Рейтинг: 0 / 0
Группировка запроса
    #39938162
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qpbdqp
ClientID судя по всему и правда первичный ключ. Но он повторяется(ключ-он потому и ключ что не повторяется-уникален) и я если честно думал сгруппировать по нему. Не знал что не получится. Я, если честно, не знаю что значит сторона М. Возможно поле tblMain.Client?
М--это поле связи в таблице со стороны многие (связь один ко многим 1:М) См.приложение
...
Рейтинг: 0 / 0
Группировка запроса
    #39938196
qpbdqp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь!
Подскажите, а можно ли усовершенствовать мой текущий запрос, добавив в него группировку по клиенту?
...
Рейтинг: 0 / 0
Группировка запроса
    #39938253
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qpbdqp
Спасибо за помощь!
Подскажите, а можно ли усовершенствовать мой текущий запрос, добавив в него группировку по клиенту?
Как можно ответить на Ваш вопрос не зная структуры БД-может она вообще не позволяет сделать то,что Вы хотите (кстати ЧТО)
А внимательно посмотреть,наморщить лоб....
...
Рейтинг: 0 / 0
Группировка запроса
    #39938275
qpbdqp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
=)
Структура такова: есть таблица клиентов, у клиента есть код и ФИО и есть таблицы счетов и платежей, выставляемых, на основе кода клиента в таблице счета и платежи. А эта таблица - долги, это запрос соединяющий таблицы клиент - "код и ФИО", таблицы - счета - "счета", таблицы платежи - "все платежи" и таблица долги, где считается долг. Дело в том что когда я создаю новый счёт, то эта таблица обновляется и к ней добавляется новая запись со счётом, а мне нужно, чтобы все эти счета суммировались и стояли напротив ФИО и кода клиента.

Пожалуйста посмотрите запрос который я написал в начале. Я новичок, но создать запрос создающий таблицу долги у меня получилось. Но как теперь сделать, чтобы все счета и платежи схлопывались по сумме и начислялись клиенту, чтобы знать сколько ему ещё оплачивать.
...
Рейтинг: 0 / 0
Группировка запроса
    #39938723
qpbdqp
как теперь сделать, чтобы все счета и платежи схлопывались по сумме и начислялись клиенту, чтобы знать сколько ему ещё оплачивать.
Что бы что-то подсказать, надо кое что выяснить.
1 Похоже, ваш запрос строится на такой схеме:
tblMain->qdfInvoices->qdfPaymentsByInvoices. По сколько записей может быть в qdfPaymentsByInvoices для каждого клиента? Сразу скажу, что если больше одной, то сумма
по InvoiceAmount будет неправильной и запрос надо переделывать в любом случае.
2. Исходим из того, что там 1 запись или ни одной. Тогда:
Код: sql
1.
2.
3.
4.
SELECT qdfInvoices.ClientID, tblMain.Client
SUM(qdfInvoices.InvoiceAmount) AS TotalInvoiceCalc, 
First(qdfPaymentsByInvoices.TotalPaymentAmount) AS TotalPaymentCalc, (SUM(qdfInvoices.InvoiceAmount) - NZ(First(qdfPaymentsByInvoices.TotalPaymentAmount),0)) AS DolgCalc
GROUP BY qdfInvoices.ClientID, tblMain.Client


qpbdqp
Подскажите, а можно ли усовершенствовать мой текущий запрос, добавив в него группировку по клиенту?
Она есть к вас (выделено фоном).
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Группировка запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]