Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вот это да! / 17 сообщений из 17, страница 1 из 1
13.04.2004, 12:26
    #32478858
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
Код: plaintext
SELECT IIF(ISNULL(sum(out_db_ost)), 0 ,sum(out_db_ost)) FROM table1 WHERE  1 = 2  INTO CURSOR tmp


возвращает пустой курсор! Тогда как на SQL-92 совместимом сервере я бы получил курсор с одной записью и каким-то значением (в крайнем случае 0)

Как с этим жить?
...
Рейтинг: 0 / 0
13.04.2004, 12:45
    #32478904
Вот это да!
Не понял, что это за конструкция такая WHERE 1=2 ? Она же никогда не исполнится.
Наверное, все-таки должно быть сравнение полей.
...
Рейтинг: 0 / 0
13.04.2004, 13:13
    #32478989
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
Николай

Это я для примера заведомо пустой выборки привел :)
...
Рейтинг: 0 / 0
13.04.2004, 13:15
    #32478998
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
Менять мышление... Это особенность диалекта SQL фокса :)
...
Рейтинг: 0 / 0
13.04.2004, 13:17
    #32479004
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
Короче нужно просто отдельно обработать вариант с reccount() = 0 вот и все :)
...
Рейтинг: 0 / 0
13.04.2004, 13:19
    #32479009
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
кстати вместо iif isnull есть функция nvl()
...
Рейтинг: 0 / 0
13.04.2004, 13:22
    #32479020
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
Crip

Это особенность диалекта SQL фокса :)

Милая такая особенность...

Короче нужно просто отдельно обработать вариант с reccount() = 0 вот и все :)

Ну это я уж и сам сделал :)

PS> Спасибо за nvl()
...
Рейтинг: 0 / 0
13.04.2004, 13:24
    #32479025
qu-qu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
Тогда как на SQL-92 совместимом сервере я бы получил курсор с одной записью и каким-то значением (в крайнем случае 0)

А MS-SQL-Server вы считаете "SQL-92 совместимым"?

Если, да, то он вам тоже, кстати, вернет пустой набор данных, потому как условие "WHERE 1=2" никогда не выполняется...
...
Рейтинг: 0 / 0
13.04.2004, 13:52
    #32479095
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
qu-qu

Угу! Вы бы хоть попробовали сначало...
...
Рейтинг: 0 / 0
13.04.2004, 14:01
    #32479122
qu-qu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
что пробовать-то, родное сердце?

может пример скриптика приведешь?

З.Ы. не мешало бы также и по-русски писать научиться ("сначало")
...
Рейтинг: 0 / 0
13.04.2004, 14:07
    #32479138
qu-qu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
м-да, вспылил... был не прав...

(не заметил SUM() в тексте запроса)

З.Ы. но насчет русского языка - не отменяется... :-))
...
Рейтинг: 0 / 0
13.04.2004, 14:10
    #32479146
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
qu-qu

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create table tbl (a int)

insert into tbl values( 1 )
insert into tbl values( 2 )

select sum(a) from tbl where  1 = 2 
select isnull(sum(a), 0 ) from tbl where  1 = 2 

drop table tbl


-----------
NULL

(1 row(s) affected)


-----------
0

(1 row(s) affected)



PS>
Ох..ть qu-qu , зато в русском видать силен...
...
Рейтинг: 0 / 0
13.04.2004, 14:13
    #32479151
qu-qu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
а ты еще и "тормоз", к тому же... :-))

(поправился же я, не видел что ли?)
...
Рейтинг: 0 / 0
13.04.2004, 21:11
    #32479986
karly™
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
Господа, прекратите брань, вы ведь на форуме FoxPro

2funikovyuri

В фоксе можно обращаться к полям пустой таблицы. Т.е.
Код: plaintext
1.
2.
Create Cursor temp ( f1 I, f2 C( 10 ) )
?temp.f1 &&  0 
?Len(temp.f2) &&  10 

Может быть, это чуть-чуть смягчит последствия "милой особенности" ;-)
...
Рейтинг: 0 / 0
14.04.2004, 11:14
    #32480545
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
Фокс все-таки наследуют XBase , поэтому такое поведение является для него вполне логичным. Надо просто привыкнуть
...
Рейтинг: 0 / 0
14.04.2004, 12:20
    #32480770
oleg_km
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
Интересно, если сделать:
SELECT COUNT(*) FROM Table WHERE 1=2
то будет одна строка с нулем, а если:
SELECT COUNT(*) , SUM(f) FROM Table WHERE 1=2
то все равно будет пустой курсор

Вот такие простые вещи
...
Рейтинг: 0 / 0
14.04.2004, 16:45
    #32481452
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот это да!
karly™

В фоксе можно обращаться к полям пустой таблицы

Спасибо, но это позволит получать значения "поумолчанию" - а в случае с SUM() - хотелось бы NULL :)

oleg_km

Ага - в том то и дело что в зависимости от вида агрегата - разный результат
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вот это да! / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]