Форум: "Базы";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.192 c