Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Определить дату / 8 сообщений из 8, страница 1 из 1
20.06.2003, 07:53
    #32186999
Kriven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить дату
Привет.
Попробую правильно описать проблемму
Есть две таблицы:
ЗАКАЗЫ. - |код заказа | порог|
ПЛАТЕЖИ. - |код | код заказа| дата платежа|сумма платежа|
Поля ЗАКАЗЫ.[код заказа] и ПЛАТЕЖИ.[код заказа] связанны

К примеру имеем данные: заказы -| 1 | 500|
платежи - |1|1|12.01.2003|100|
|2|1|12.02.2003|120|
|3|1|15.02.2003|281|
|4|1|12.02.2003|150|
На форме мне нужно установить комбик что бы в нем выводилась дата (в данном случае 15.02.2003) когда сумма платежей равна или преодолела порог (500). Как мне написать для него запрос?
Заранее благодарен.
...
Рейтинг: 0 / 0
20.06.2003, 08:42
    #32187018
Kriven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить дату
Наверное никак?
...
Рейтинг: 0 / 0
20.06.2003, 13:41
    #32187371
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить дату
Первое, что приходит в голову:
1. Группировочный запрос по оплатам, код, max на дату и sum на сумму
2. Join (1) с табл. заказов (по коду ;), расчет остатков по каждому заказу.
Если > - выводить в ЕщеОдноНовоеПолеЗапроса дату, иначе - нулл или "не оплачено"

Согласно первой строчке это может и не быть самым оптимальным решением ;)
...
Рейтинг: 0 / 0
20.06.2003, 13:54
    #32187391
VIG
VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить дату
Если у тебя поле код в таблице платежи уникально то можно так
Код: plaintext
1.
2.
select c.date,sum(c.pay)  as Pay from 
(select  distinct a.OrderCod,a.date,b.Pay from Payment as a left join Payment as b on a.OrderCod=b.OrderCod and a.id>=b.id) as c
group by c.date having sum(c.pay)>= 500 
...
Рейтинг: 0 / 0
20.06.2003, 16:48
    #32187629
VIG
VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить дату
Правильнее будет так
Код: plaintext
1.
2.
select   a.cod,a.[дата платежа],sum(b.Платеж) as SumP 
from ПЛАТЕЖИ as a INNER join ПЛАТЕЖИ as b on a.[код заказа]=b.[код заказа] and a.код>=b.код
group by a.[код заказа],a.код,a.[дата платежа] having sum(b.Платеж)>= (select c.порог from ЗАКАЗЫ c where c.код=a.код) 
...
Рейтинг: 0 / 0
20.06.2003, 17:57
    #32187724
Nick987
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить дату
Можно расширить таблицу Заказы:
|код заказа | порог|текущая сумма|
и при каждом платеже обновлять поле "текущая сумма"
таким образом, усложняя логигу на внесение платежей, упрощаем обработку и, возможно, существенно убыстряем вывод в форму.
...
Рейтинг: 0 / 0
20.06.2003, 18:49
    #32187759
Nick987
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить дату
В данном случае надо еще добавить поле "Дата преодоления порога":
|код заказа | порог|текущая сумма|Дата преодоления порога
...
Рейтинг: 0 / 0
21.06.2003, 06:51
    #32187930
Kriven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить дату
Alexus12: C MAXом не пойдет. платежи на этом не заканчиваются, и будет вылетать последняя дата.
Пошел простым путем и добавил логическое поле в таблицу ЗАКАЗЫ по которому и определяю дату.
Спасибо всем.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Определить дату / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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