Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];

Вниз

извините за попытку 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.01 c
1-56665
TUser
2003-11-05 10:12
2003.11.17
Fonts in RichEdit


1-56698
Zaratustra
2003-11-07 14:23
2003.11.17
Вопрос по компонентам схожим с TreeView


3-56496
Raduga
2003-10-28 11:30
2003.11.17
Формат вывода даты (ADO+Access)


3-56470
Kinder
2003-10-22 15:47
2003.11.17
Как обработать SQL запрос?


14-56913
Nazarik
2003-10-24 19:56
2003.11.17
Зима пришла!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский