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

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

SQL запрос [IB6.x]


Страницы:   1 2

Bizon's ©   (2004-06-24 00:00:00) 

Hi All!!
Есть запрос
select a.*,
(select sum(b.summ) from b where a = b)
from a


Второй селект (select sum(b.summ) from b where a = b)возвращает null если в таблице b нет записей.

Как можно сделать чтобы селект возвращал 0, а не null?


Соловьев   (2004-06-24 13:53:00) [1]


> Если можно сделать в скрипте, то зачем рожать ХП?

что такое скрипт? :)


Курдль   (2004-06-24 13:50:00) [2]


> Соловьев ©   (24.06.04 13:44) [19]
> Что ты имеешь ввиду под SQL? Select?

Я понимаю Structured Query Lanquage. А что?
Если можно сделать в скрипте, то зачем рожать ХП?


Соловьев   (2004-06-24 13:44:00) [3]


> 2. "Громоздкий". Соловьев ©   (24.06.04 13:31) [16]

согласен, но можно же без UDF:)


Соловьев   (2004-06-24 13:44:00) [4]


> IB понимает условные операторы в SQL?

Что ты имеешь ввиду под SQL? Select?
В хранимых процедурах тоже, кстати, SQL.
Эту проблему(сабж) можно решить в IB(не в FireBird) только 2-я способами
1. [1]
2. хранимая процедура.

Если бы это был ФБ 1.5 - то там можно и в операторе SELECT без UDF решить.


Johnmen   (2004-06-24 13:43:00) [5]

>Как быть?

1. Перейти на версию/клон IB, кот. поддерживает необходимые фичи.
2. "Громоздкий". Соловьев ©   (24.06.04 13:31) [16]


Курдль   (2004-06-24 13:38:00) [6]


> Соловьев ©   (24.06.04 13:31) [16]
> используй ХП

А что это изменит??? Зачем советовать человеку невесть что???
IB понимает условные операторы в SQL?


Соловьев   (2004-06-24 13:31:00) [7]


> [15] Bizon's ©   (24.06.04 13:29)

используй ХП


Bizon's   (2004-06-24 13:29:00) [8]

С гридом понятно, но тогда как выполнить запрос

select a.*,
100-(select sum(b.summ) from b where a = b)
from a

Если от числа отнять null то возвращает null, а надо число = 100.
Как быть?


Эдик   (2004-06-24 12:17:00) [9]

а если if применит?


Sandman25   (2004-06-24 10:58:00) [10]

[12] Johnmen ©   (24.06.04 10:56)

Точно. Мне обычно такое использовать не приходится, слава другим СУБД :)


Johnmen   (2004-06-24 10:56:00) [11]

V := MyField.AsInteger;
:)


Sandman25   (2004-06-24 10:54:00) [12]

>Чтобы в гриде не было пустой строки

OnGetText

>а также для дальнейших операций с числами

if MyField.IsNull then
 V := 0
else
 V := MyField.Value


Bizon's   (2004-06-24 10:52:00) [13]


> зачем?

Чтобы в гриде не было пустой строки, а также для дальнейших операций с числами жедательно чтобы был 0.


Соловьев   (2004-06-24 10:07:00) [14]


> Как можно сделать чтобы селект возвращал 0, а не null?

зачем?


Johnmen   (2004-06-24 10:05:00) [15]

В IB6.0 встроенной нет.


Курдль   (2004-06-24 09:36:00) [16]


> Johnmen ©   (24.06.04 09:22) [5]
> Есть. Только IS NULL


Плохо... а то в Sybase есть
ISNULL function [Data type conversion]
Returns the first non-NULL expression in the parameter list.

А в Оракле есть NVL...
Неужели в IB нет аналога?


Жук   (2004-06-24 09:31:00) [17]


> Johnmen ©   (24.06.04 09:06) [3]

Просто намёк, что в сторону группировки надо смотреть...


Johnmen   (2004-06-24 09:22:00) [18]

Есть. Только IS NULL
:)))


Курдль   (2004-06-24 09:09:00) [19]

А в IB нет ISNULL?


Johnmen   (2004-06-24 09:06:00) [20]

>Жук ©  

Это не поможет...

>Bizon's ©

Для IB6.0 приемлемого/негромоздкого решения нет.


Страницы:   1 2

Наверх

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