![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL запрос [IB6.x]
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 приемлемого/негромоздкого решения нет.