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

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

Считаем баланс? [D6, IB5.x]


off ©   (2003-05-27 06:43:00) 

Доброе утро мастера, если утро где-то бывает добрым *-) Но служба есть служба, а значит снова в бой.
Есть две таблицы ("начисления"&"оплата"), возникла необходимость подсчитать баланс и сравнить его с нулем (или некоторой суммой).
Для чего пишу следующий СиКуЛь:
... WHERE(( SELECT SUM(SUMALL FROMNACHALL) - ( SELECT SUM(PAY FROMPAYALL))>0 ...
И все, вроде бы работает, кроме случаев, когда один из селектов возвращает NULL. Тогда вся разность приравнивается к NULL.
Похоже, что всему виной неугамонный NULL, а мой вопрос можно свести к следующему как (что добавить с СиКуЛь) получить 0вместо противного NULL


Alexandr   (2003-05-30 14:40:00) [1]

а в Омске ты не будешь?


Zacho   (2003-05-30 14:08:00) [2]


> off © (30.05.03 14:01)

Не откажусь.. :-D


off   (2003-05-30 14:01:00) [3]

Спасибо Zacho и Alexandr сделал через UDF, все работает, превосходно.
Да и на последок, Игорь, если буду в Новосибирске с меня пиво :-)


Zacho   (2003-05-27 08:36:00) [4]

Добавлю насчет "кривости".
Если в полях, по котрым считаются суммы, может быть NULL - то это в подавляющем большинстве случаев кривость разработки структуры БД. Лучше делать такие поля NOT NULL DEFAULT 0 - и подобных проблем не будет.


Zacho   (2003-05-27 08:25:00) [5]


> off © (27.05.03 07:40)
> А не может так получиться, что дело совсем не в NULL, а
> в кривом СиКуЛе?

Смотря что считать "кривым". А вообще любая арифметическая операция с null даст в результате null

> Простите а можно подробнее как без UDF?

В Yaffil - с помощью функции IIF.
В FB - что-то типа CASE, COALESCE точно не помню, смотри документацию по FB


off   (2003-05-27 07:40:00) [6]

А не может так получиться, что дело совсем не в NULL, а в кривом СиКуЛе?

> Zacho © (27.05.03 06:57)


> P.S. В Yaffil и FB1.5 можно и без UDF.

Простите а можно подробнее как без UDF?


Alexandr   (2003-05-27 07:11:00) [7]

UDF называется z
находится она в rfunc
и заменяет она null на 0


Zacho   (2003-05-27 06:57:00) [8]

C помощью UDF. Написать самому или посмотреть на www.ibase.ru, там были такие UDF.
P.S. В Yaffil и FB1.5 можно и без UDF.


Наверх

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