Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать запрос?...


Владий ©   (2003-07-31 09:52:00) 

Есть база в Access"е. 1-я таблица - список счетов. 2-я - поступление на счет (дата/сумма/№), 3-я - списание со счетов.
Нужно правильно посчитать - в какой период (сколько дней) какая сумма висела на каждом счете. Можно это сделать запросом? А то вручную делать - неспортивно...

Хорошей Удачи!
Владий // ICQ: 47659886


ЮЮ   (2003-08-01 03:21:00) [1]

Р.S. Сформулируй, примерно так:
"Для каждого(или заданного счета) на заданную дату необходимо подчитать сумму по всем приходом до этой даты(включительно) и вычесть сумму по всем расходам до этой даты(включительно)"

При такой формулировке решение становится просто очевидным. Просто не хочется его выводить, не будучи уверенным, что тебе надо именно это, а не "в какой период (сколько дней) какая сумма висела на каждом счете"


ЮЮ   (2003-08-01 03:11:00) [2]

>в какой период (сколько дней) какая сумма висела на каждом счете.

Ну и формулировочка! :-)
На такой вопрос существует только один правильный ответ:
"Сумма на счете - это запись во 2-й и она виситвсегда, пока запись существует, начиная с даты, указанной в записи"


Владий   (2003-07-31 12:53:00) [3]

Постоянно получались отрицательные значения (хотя их быть не может). попробовал так посмотреть:

SELECT Contracts.NunDog, Got.GDate, Sum(Got.GSum), Transfer.TDate, Sum(Transfer.TSum)
FROM (Contracts LEFT JOIN Got ON Contracts.NunDog = Got.Contr) LEFT JOIN Transfer ON Contracts.NunDog = Transfer.Contract
GROUP BY Contracts.NunDog, Got.GDate, Transfer.TDate
ORDER BY Contracts.NunDog, Got.GDate, Transfer.TDate;

И дошло до меня, что т.к. Даты беруться не каждый день, то и расчеты неверны... Как создать условие, чтобы у меня не считалась разница когда не надо? А то получается, что у меня отчисления 15, до которого было несколько поступлений, а разница считается между перыми записями...

Хорошей Удачи!
Владий // ICQ: 47659886



Соловьев   (2003-07-31 11:54:00) [4]


> stud © (31.07.03 11:43)


> Только вот вместо "Got.GSum-Transfer.TSum" нужно поставить
> что-то,
> чтоб суммировались все поступления\перечисления на дату...

поэтому нада групировку сначала по дате сделать.


Соловьев   (2003-07-31 11:44:00) [5]

SELECT Contracts.NunDog, Transfer.TDate-Got.GDate, SUM(Got.GSum-Transfer.TSum)
FROM (Contracts LEFT JOIN Got ON Contracts.NunDog = Got.Contr) LEFT JOIN Transfer ON Contracts.NunDog = Transfer.Contract
GROUP BYTransfer.TDate-Got.GDate, Contracts.NunDog


stud   (2003-07-31 11:43:00) [6]

sum(Got.GSum-Transfer.TSum)...
group by Contracts.NunDog, Transfer.TDate-Got.GDate...


Владий   (2003-07-31 11:40:00) [7]

Почти получилось, только немного не то выходит, что надо...
пока так:

SELECT Contracts.NunDog, Transfer.TDate-Got.GDate, Got.GSum-Transfer.TSum
FROM (Contracts LEFT JOIN Got ON Contracts.NunDog = Got.Contr) LEFT JOIN Transfer ON Contracts.NunDog = Transfer.Contract;

Только вот вместо "Got.GSum-Transfer.TSum" нужно поставить что-то,
чтоб суммировались все поступления\перечисления на дату...

Хорошей Удачи!
Владий // ICQ: 47659886


alex_bredin   (2003-07-31 10:17:00) [8]

select scheta.nscheta,
spis.data_spisania-postup.data_postuplenia,
( scheta left join postup on scheta.nscheta=postup.nscheta left join spis on scheta.nscheta=spis.nscheta)

select scheta.nscheta,
spis.data_spisania-postup.data_postuplenia,
postup.summa
from (scheta left join postup on scheta.nscheta=postup.nscheta left join spis on scheta.nscheta=spis.nscheta )



alex_bredin   (2003-07-31 10:10:00) [9]

select spis.data_spisania-postup.data_postuplenia?


Наверх

Титульная страница Поиск, карта сайта Написать письмо