Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.17;
Скачать: CL | DM;

Вниз

извините за попытку 2 - про sql   Найти похожие ветки 

 
опять я   (2003-10-27 00:38) [0]

Клиенты(КодКлиент,название)
Договор(КодДоговора,КодКлиент)
Заказано(кодЗаказано,КодДоговор,Сумма)- что заказано в договоре
Оплата(КодОплата,кодДоговор,Сумма)- оплата по договору

Запрос на определние задолженности
SELECT Клиенты.Название, Договор.КодДоговор, Sum([Заказано]![Сумма])-Sum([Оплата]![Сумма]) AS Долг
FROM Клиенты INNER JOIN (Договор INNER JOIN [Оплата] ON Договор.КодДоговор = Оплата.КодДоговора) ON Клиенты.КодКлиента = Договор.КодКлиента
WHERE Договор.КодДоговора=:КодДоговор
GROUP BY Договор.КодДоговор;

сначала считает нормально, при условии что есть записи в таблице оплата, а потом смотришь - и значение удвоилось, утроилось..что делать, и как обработать исключительную ситуацию отсутствия записей в таблице Оплата.
Мне приходится делать два запроса - один на определение суммы по договору, второй - - по оплате, а потом их уже сравнивать. но это же коряво!!!

ps-шекли читал


 
ЮЮ ©   (2003-10-27 03:52) [1]

>Мне приходится делать два запроса - один на определение суммы по договору, второй - - по оплате, а потом их уже сравнивать. но это же коряво!!!

И чего здесь корявого?
Надо сделать два запроса - один на определение суммы по договору, второй - - по оплате непосредственно в Accesse (это будут по существу VIEW) с группировкой по клиенту (или договору, смотря где задолженности тебя интересуют) и уже их использовать в запросе, а не сами таблицы. Хотя Access, наверняка, и подзапросы поддерживает

>и как обработать исключительную ситуацию отсутствия записей в таблице Оплата

И что же это за ситуация такая? Используй LEFT JOIN и наличие/отсутствие записей в подчиненных таблицах никак не повлияет на количество записей, возвращаемых запросом


 
Sandman25 ©   (2003-10-27 11:08) [2]

У нас в таких случаях добавляют в поле договора еще одно поле - текущая оплаченная сумма. Тогда сразу видно, какие договора еще не полностью оплачены и на сколько именно. Поле можно обновлять по триггеру или в той же хранимой, которая добавляет документы оплаты.


 
paul_k ©   (2003-10-27 11:12) [3]

Удалено модератором


 
Sandman25 ©   (2003-10-27 11:18) [4]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2003.11.17;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
7-56925
TALLA
2003-07-16 00:18
2003.11.17
С завершением сервиса беда:(


3-56521
ss300
2003-10-27 17:09
2003.11.17
DateTime


14-56811
Baklan
2003-10-23 15:53
2003.11.17
Недавно поздравляли новых мастеров


14-56893
VEG
2003-10-19 14:20
2003.11.17
Кто что и как думает об технологии .NET?


7-56937
webPauk
2003-09-03 17:00
2003.11.17
Console application