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

Вниз

Как обмануть сервер   Найти похожие ветки 

 
Виталий Панасенко   (2003-02-17 17:46) [0]

Вообще-то, у меня два вопроса. Первый: как использовать макроподстановки в FIBPlus, и второй: как обмануть SQL-сервер,(точнее, как получить нужный результат), выполняя запрос:
select sum(summa)+ (select sum(summa) from sum_tbl where id = 0) from sum_tbl where id = 1
Если подзапрос что-то возвращает - нет проблем, а если null, то и результат null, даже если существую записи с Id=1
Как быть ?


 
Johnmen ©   (2003-02-17 17:49) [1]

1. А они там есть ?
2. Обманывать нехорошо ! Но есть UDF.


 
Виталий Панасенко   (2003-02-18 08:55) [2]

1.Макро, судя из readme - есть, позволяют подставлять имена таблицы/поля в запросе в качестве параметров.
2.Об UDF слышал, но думал может чего еще есть :-)
Дякую.


 
Роман Косилов   (2003-02-18 10:27) [3]

Что касается второго вопроса:
тот запрос что Вы приводите можно более эффективно записать так:
select sum(summa) from sum_tbl where (id = 0)or(id = 1).
А для избавления от NULL можно попробовать сделать так:
select 0.0+sum(summa) from sum_tbl where (id = 0)or(id = 1).



 
AlexSerp ©   (2003-02-18 11:05) [4]

По второму вопросу.
Роман Косилов (18.02.03 10:27) правильно написал.
Я думаю, что в 0.0+sum(summa) можно не писать 0.0+, т.к. не имеет смысла. Все равно просуммируются.

Саня


 
Sergey Uolis   (2003-02-18 12:34) [5]

Про макросы читай статью на сайте fibplus.com.ua. Называется типа "Школа ФИБПлюс - Макросы". Более полного описания не бывает.


 
Val ©   (2003-02-18 13:07) [6]

сложение с null все равно вернет null


 
DarkGreen ©   (2003-02-18 13:44) [7]

ИМХО использование nullable полей не есть хорошая практика
Что тебе мешает пробежаться по табличе и сделать:
update my_tbl
set my_field = 0
where my_field is null
И не будет необходимости писать извратные запросы


 
Val ©   (2003-02-18 13:52) [8]

использование nullable полей не есть хорошая практика
стоит уточнить - их использование, где нужно как раз наоборот, NOT NULL.


 
DarkGreen ©   (2003-02-18 14:48) [9]

2 Val © (18.02.03 13:52)


> стоит уточнить - их использование, где нужно как раз наоборот,
> NOT NULL.

Угу, просто у меня все поля нотнул, даже те, которые могут быть нул, я просто ставлю дефолт значения им и потом не парюсь при суммировани NULL значений ;-)


 
AME   (2003-02-18 14:55) [10]

LEFT или RIGHT JOIN и проверка на NULL спасет отца демократии.
Если коннект через драйвера ODBC,линкуй таблицы в Access для составления сложных запросов.
Или эмулируй структуру в Access.


 
Val ©   (2003-02-18 15:19) [11]

>DarkGreen © (18.02.03 14:48)
Угу, просто у меня ...
как говорится - "Кто воевал, имеет право" :)


 
Виталий Панасенко   (2003-02-18 17:30) [12]

Народ вы меня не поняли ! Я несколько утрировал постановку вопроса (т.е. она не совсем правильна):
select sum(summa)+ (select sum(summa2) from sum_tbl2 where id=1) from sum_tbl1 where id=0
т.е. в выражении используются разные таблицы.
Насчет 0 ор 1 я и сам знаю. Сорри за непонятку :-)


 
Виталий Панасенко   (2003-02-18 17:32) [13]

И еще: null появляется не из-за того, что имею поля со значением null (там у меня как раз по умолчанию значение 0), а из-за того, что нет записей удовлетворяющих условию


 
Desdechado ©   (2003-02-19 12:12) [14]

сделай:
select ...
union all
select ...
а на клиенте просуммируй.

или вариант 2:
используй UDF, которая из null сделает 0, а любое число оставит без изменений


 
Виталий Панасенко   (2003-02-19 16:15) [15]

Написать-то UDF можно, но как узнать, что это null ...


 
Desdechado ©   (2003-02-19 18:00) [16]

www.ibase.ru
библиотека RLib - функция Z - до ужаса примитивна, но null в 0 превращает :)


 
Эдуард   (2003-02-19 19:29) [17]

select sum(summa)+ IsNull((select sum(summa) from sum_tbl where id = 0),0) from sum_tbl where id = 1



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

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

Наверх




Память: 0.5 MB
Время: 0.022 c
3-29741
Shrek
2003-02-19 14:24
2003.03.10
Как переименовать поле?


3-29705
Ihtiandr
2003-02-18 17:28
2003.03.10
Generator


3-29755
phantom2040
2003-02-19 16:12
2003.03.10
Помогите с паролями для таблицы Парадокс


3-29765
northwind
2003-02-19 14:15
2003.03.10
Delphi+Informix


14-30031
Stream2k
2003-02-23 21:09
2003.03.10
Использует ли кто при разработке больших(серьёзных) приложений...