Имя: Пароль:
1C
1С v8
Простой запрос - неожиданный результат
,
0 Sj
 
24.03.14
08:54
Доброе время суток!

Запрос, ну, проще некуда.

   ВЫБРАТЬ СУММА(1) КАК Поле1 ГДЕ ЛОЖЬ

Вопрос: почему результат запроса не пустой?
1 shuhard
 
24.03.14
09:08
ВЫБРАТЬ 1 КАК Бред ГДЕ Истина=ЛОЖЬ
2 ДенисЧ
 
24.03.14
09:08
а пчоему он должен быть пустым?
3 Нерезидент РФ
 
24.03.14
09:22
кстати да. дело в СУММА. если
ВЫБРАТЬ
    1 КАК Поле1
ГДЕ
    ЛОЖЬ

то результат пустой

ВЫБРАТЬ
    СУММА(1) КАК Поле1
ГДЕ
    ЛОЖЬ

здесь есть строчка в запросе
4 Sj
 
24.03.14
09:34
(2) потому что Где Ложь. На фоксе - select sum(1) into curs t1 from table1 where 0 = 1 - нет данных.
5 azt-yur
 
24.03.14
09:35
Условие ГДЕ накладывается на первоначальные данные, затем производится суммирование. Поэтому и выходит, что сумма пустого множества NULL.
В данном случае вместо "ГДЕ" стоит использовать "ИМЕЮЩИЕ"
6 Ненавижу 1С
 
гуру
24.03.14
09:36
если нет секции СГРУППИРОВАТЬ ПО, то результат гарантированно не пустой
7 Нерезидент РФ
 
24.03.14
09:37
(6) даже с "СГРУППИРОВАТЬ " результат будет не пустой. прав (5)
8 Нерезидент РФ
 
24.03.14
09:37
век живи век учись. не знал
9 Sj
 
24.03.14
09:47
По мне так: сумма пустых множеств = пустому множеству.
Если (ВЫБРАТЬ 1 КАК Поле1 ГДЕ Ложь) - пустое множество, которое не содержит ни одной строки, то и сумма таких множеств должно так же не содержать ни одной строки.
10 hhhh
 
24.03.14
09:49
(9) не, сумма всегда есть. Это факт, от этого никуда не деться.
11 azt-yur
 
24.03.14
09:59
(9) подобный запрос в SQL выдает такой же результат. Так что это особенность выполнения запросов
12 Sj
 
24.03.14
10:14
(11) да, спасибо!
13 Ненавижу 1С
 
гуру
24.03.14
10:15
(7) не ври