Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.03.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
Виталий Панасенко   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
3-29740
Burlik
2003-02-19 14:02
2003.03.10
Help ! Поиск по индеку в DBF-файле ...


7-30166
stone
2003-01-10 10:25
2003.03.10
Печать на сетевом принтере


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


1-29842
Asderg
2003-02-28 12:17
2003.03.10
error during link...


14-30094
Delphinium
2003-02-22 13:07
2003.03.10
Шаровара





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский