Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.18;
Скачать: CL | DM;

Вниз

SQL запрос   Найти похожие ветки 

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

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?


 
jack128 ©   (2004-06-24 00:13) [1]

для IB6 использовать UDF,
для FB1.5 попробуй COALESCE(select sum(b.summ) from b where a = b), 0) может и заработает, но наврятли ;-)


 
Жук ©   (2004-06-24 08:35) [2]

select a.*, sum(b.sum)
from a left join b on a.field=b.field
group by a.*


 
Johnmen ©   (2004-06-24 09:06) [3]

>Жук ©  

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

>Bizon"s ©

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


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

А в IB нет ISNULL?


 
Johnmen ©   (2004-06-24 09:22) [5]

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


 
Жук ©   (2004-06-24 09:31) [6]


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

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


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


> 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 нет аналога?


 
Johnmen ©   (2004-06-24 10:05) [8]

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


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


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

зачем?


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


> зачем?

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


 
Sandman25 ©   (2004-06-24 10:54) [11]

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

OnGetText

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

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


 
Johnmen ©   (2004-06-24 10:56) [12]

V := MyField.AsInteger;
:)


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

[12] Johnmen ©   (24.06.04 10:56)

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


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

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


 
Bizon's ©   (2004-06-24 13:29) [15]

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

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

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


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


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

используй ХП


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


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

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


 
Johnmen ©   (2004-06-24 13:43) [18]

>Как быть?

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


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


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

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

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


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


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

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


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


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

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


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


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

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



Страницы: 1 вся ветка

Текущий архив: 2004.07.18;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.044 c
1-1088689302
killer
2004-07-01 17:41
2004.07.18
MainMenu


1-1088895655
CyberSpy
2004-07-04 03:00
2004.07.18
Печать страницы


14-1088509025
blackweber
2004-06-29 15:37
2004.07.18
Win98 - сеть - WinXP


14-1088626071
Мазут Береговой
2004-07-01 00:07
2004.07.18
Сурьёзеый вопрос на ентот раз.


1-1089204185
CrazyHacKeRs
2004-07-07 16:43
2004.07.18
Как установить ActiveX на другой компьютер под w2k