Имя: Пароль:
1C
1С v8
Помогите с запросом
,
0 go1c
 
18.06.13
00:23
Есть к примеру запрос:
ВЫБРАТЬ
   1 КАК Поле1,
   2 КАК Поле2,
   4 КАК Поле3,
   4 КАК Поле4
ПОМЕСТИТЬ втСтроки

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   0,
   0,
   0,
   0

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   4,
   -8,
   -4,
   8
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   втСтроки.Поле1,
   втСтроки.Поле2,
   втСтроки.Поле3,
   втСтроки.Поле4
ИЗ
   втСтроки КАК втСтроки


Какое условие нужно прописать в разделе ГДЕ чтобы отобрать записи поля которых одновременно равны нулю
1 go1c
 
18.06.13
00:24
одновременно НЕ РАВНЫ нулю
2 go1c
 
18.06.13
01:06
получилось с таким условием
ГДЕ
ВЫБОР
   КОГДА втСтроки.Поле1 + втСтроки.Поле2 + втСтроки.Поле3 + втСтроки.Поле4 = 0
           И втСтроки.Поле1 - втСтроки.Поле2 - втСтроки.Поле3 - втСтроки.Поле4 = 0
       ТОГДА ЛОЖЬ
   ИНАЧЕ ИСТИНА
КОНЕЦ
может будут еще варианты или замечания?
3 Нуф-Нуф
 
18.06.13
01:08
Че?
4 zladenuw
 
18.06.13
02:43
ИМЕЮЩИЕ
   СУММА(втСтроки.Поле1 + втСтроки.Поле2 + втСтроки.Поле3 + втСтроки.Поле4) = 0
5 SeraFim
 
18.06.13
04:01
(2) 0 1 -1 0 в выборку при таком условии не попадет.

Чем
ГДЕ Поле1 <> 0 и Поле2 <> 0 и Поле3 <> 0 и Поле4 <> 0
не устраивает?
6 x-a-d
 
18.06.13
04:54
(5) правильно.
суммировать нельзя, т.к. например
5 + (-5) = 0
Сумма нулевая, но составляющие нет.
7 MiniMuk
 
18.06.13
05:50
ВЫБРАТЬ
   1 КАК Поле1,
   2 КАК Поле2,
   4 КАК Поле3,
   4 КАК Поле4
ПОМЕСТИТЬ втСтроки

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   0,
   0,
   0,
   0

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   4,
   -8,
   -4,
   8
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   втСтроки.Поле1,
   втСтроки.Поле2,
   втСтроки.Поле3,
   втСтроки.Поле4,
   ВЫБОР
       КОГДА втСтроки.Поле1 = 0
           ТОГДА 1
       ИНАЧЕ 0
   КОНЕЦ КАК Поле5,
   ВЫБОР
       КОГДА втСтроки.Поле2 = 0
           ТОГДА 1
       ИНАЧЕ 0
   КОНЕЦ КАК Поле6,
   ВЫБОР
       КОГДА втСтроки.Поле3 = 0
           ТОГДА 1
       ИНАЧЕ 0
   КОНЕЦ КАК Поле7
ПОМЕСТИТЬ ccc
ИЗ
   втСтроки КАК втСтроки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ccc.Поле1,
   ccc.Поле2,
   ccc.Поле3,
   ccc.Поле4
ИЗ
   ccc КАК ccc
ГДЕ
   ccc.Поле5 + ccc.Поле6 + ccc.Поле7 = 3
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ втстроки
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ссс
8 SeraFim
 
18.06.13
05:55
(7)извращенец
9 MiniMuk
 
18.06.13
05:57
(8) 1 правило юзера работает  - не трож.
2 правило, можешь лучше сделай
10 go1c
 
18.06.13
11:49
(7) Спасибо за ваш вариант решения задачи. Может у кого то еще будут идеи?
11 lamesnake
 
18.06.13
11:53
Если "одновременно НЕ РАВНЫ нулю" = ни одно не равно нулю, тогда
ГДЕ Поле1*Поле2*Поле3*Поле4 <> 0
12 Classic
 
18.06.13
11:53
ИМЕЮЩИЕ
ВЫБОР КОГДА Поле1 > 0 ТОГДА Поле1 ИНАЧЕ -Поле1 КОНЕЦ
+ ВЫБОР КОГДА Поле2 > 0 ТОГДА Поле2 ИНАЧЕ -Поле2 КОНЕЦ
+ ВЫБОР КОГДА Поле3 > 0 ТОГДА Поле3 ИНАЧЕ -Поле3 КОНЕЦ
+ ВЫБОР КОГДА Поле4 > 0 ТОГДА Поле4 ИНАЧЕ -Поле4 КОНЕЦ
<> 0
13 Ненавижу 1С
 
гуру
18.06.13
11:54
(11) яростно плюсую
14 go1c
 
18.06.13
12:04
(12) спасибо, как по мне пока самое лаконичное решение
15 palpetrovich
 
18.06.13
12:05
(14) а (11) чем не нравится?
16 go1c
 
18.06.13
12:08
(15) условие на ОДНОВРЕМЕННОЕ неравенство 0 всех полей, условие из (11) для, к примеру полей, 0 1 1 1 не выполняется.
17 lamesnake
 
18.06.13
12:19
Переведи на русский "одновременно не равны нулю".
18 acsent
 
18.06.13
12:22
за все кроме
ГДЕ Поле1 <> 0 и Поле2 <> 0 и Поле3 <> 0 и Поле4 <> 0
нужно палкой по рукам
19 go1c
 
18.06.13
12:23
(17) если в запросе 4е колонки, то строки с полями 0 0 0 0 должны отсекаться
20 go1c
 
18.06.13
12:25
(18) ну ну
21 WIRL
 
18.06.13
12:25
a=0, b=0, c=0 равносильно a*a + b*b + с*с =0
22 Ненавижу 1С
 
гуру
18.06.13
12:25
(16) ГДЕ Поле1*Поле1+Поле2*Поле2+Поле3*Поле3+Поле4*Поле4<>0
23 lamesnake
 
18.06.13
12:30
(18) тогда уж, как выяснилось

ГДЕ Поле1 <> 0 или Поле2 <> 0 или Поле3 <> 0 или Поле4 <> 0
24 exwill
 
18.06.13
12:33
(22) )))))))))))
Математик, однако!
25 go1c
 
18.06.13
12:35
(23) Браво) прекрасная логика
26 exwill
 
18.06.13
12:36
(19) А строки с 0 0 0 1 должны входить в результат?
27 palpetrovich
 
18.06.13
12:36
мдя, жаль что так нельзя
ГДЕ  Поле1=Поле2=Поле3=0 ...кста почему?  :)
28 go1c
 
18.06.13
12:36
(22) Спасибо
29 go1c
 
18.06.13
12:37
(26) конечно
30 exwill
 
18.06.13
12:48
(27) Почему нельзя?
Можно.
ГДЕ Поле1=Поле2 И Поле1=Поле3 И Поле1=Поле4 И Поле1=0
31 go1c
 
18.06.13
12:53
(30) как вариант, только в контексте этой задачи правильней ГДЕ НЕ(Поле1=Поле2 И Поле1=Поле3 И Поле1=Поле4 И Поле1=0)
32 palpetrovich
 
18.06.13
13:19
(30) в некоторых языках программирования конструкция из (27) существует и без "И" :)
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.