Главная страница
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.017 c
6-56806
BlackSun
2003-09-21 21:50
2003.11.17
ОБратный вызов


3-56444
dolmat
2003-10-29 15:46
2003.11.17
Создание вычисляемого поля


1-56723
Makhanev A.S.
2003-11-07 00:11
2003.11.17
TAction - Shortcut...


3-56500
Natik
2003-10-28 09:36
2003.11.17
Передать нулевые параметры запроса


4-56957
Marat_n
2003-09-22 21:41
2003.11.17
программа, работающая во время простоя системы