Главная страница
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.037 c
3-56526
Berg
2003-10-27 15:39
2003.11.17
Конвертирование Parodox в MySQL


3-56509
exciter__
2003-10-27 19:18
2003.11.17
Interbase и DECLARE CURSOR. (Продолжаем диалог)


3-56483
Developerr
2003-10-27 13:31
2003.11.17
Изменение номеров в поле!!!


1-56652
Zn
2003-11-05 11:06
2003.11.17
Как сделать цикл по всем элементам формы.


1-56726
RoLeX
2003-11-06 17:33
2003.11.17
Когда разница между Edit1.text и Edit2.text больше 14342, о прога