Имя: Пароль:
1C
 
В каком порядке идет сравнение в запросе? по порядку?
0 Shur1cIT
 
13.07.15
15:33
то что во встроенном языке если первое условие верно дальше не идет я знаю . а как в запросе?
например:

истина
ложь
ложь
ложь
истина

вопрос всегда ли условие в запросе на первым условии удовлетвориться? или может последнею истину схватить?
1 ДенисЧ
 
13.07.15
15:34
В общем случае - это неопределено.
2 Гёдза
 
13.07.15
15:35
кто-нибудь понимает о чем ТС?
3 Одинесю
 
13.07.15
15:35
(2) Да
4 Одинесю
 
13.07.15
15:36
ИСТИНА ИЛИ ЛОЖЬ ИЛИ ЛОЖЬ ИЛИ ИСТИНА - до последней ИСТИНА будет проверять или на первой остановится
5 Shur1cIT
 
13.07.15
15:36
(1) то есть для запроса это правило не действует?
6 John83
 
13.07.15
15:38
дык попробуй
7 Shur1cIT
 
13.07.15
15:40
(6) сейчас может сработать , а потом звезды не сойдутся (платформа поменяется) и будет попа
8 H A D G E H O G s
 
13.07.15
15:41
(4) До первой
9 Одинесю
 
13.07.15
15:42
(8) Я тоже где-то встречал, не помню где.
10 ДенисЧ
 
13.07.15
15:47
(5) да, не действует.
Ибо запрос - это декларативщина, а простой код - императивщина
11 sash-ml
 
13.07.15
15:51
(5) действует
если "ИЛИ" то до первой "ИСТИНА" результат "ИСТИНА"
если "И" то до первой "ЛОЖЬ" результат "ЛОЖЬ"
12 Shur1cIT
 
13.07.15
15:54
(11) код запроса по-другому исполняется нежели код языка 1с, запрос 1с по сути калькой переводиться в запрос скуля.
13 Одинесю
 
13.07.15
15:55
попробуй так Если Истина Или Объект.НесуществующийМетод()
14 Одинесю
 
13.07.15
15:58
15 Andry888
 
13.07.15
16:13
(0) в запросе все будет анализироваться, т.к. в запросе идет анализ массива данных, а не конкретных одиночных значений как в коде встроенного...
16 John83
 
13.07.15
16:17
вот ведь развели...
ВЫБРАТЬ
    ВЫБОР
        КОГДА ИСТИНА
                ИЛИ 1 / 0 = 0
            ТОГДА ИСТИНА
    КОНЕЦ КАК Поле1
возвращает истину
17 palpetrovich
 
13.07.15
16:22
(16) а
ЫБРАТЬ
    ВЫБОР
        КОГДА ИСТИНА
                ИЛИ ЛОЖЬ
            ТОГДА ИСТИНА
    КОНЕЦ КАК Поле1

что вернет? :)
18 Одинесю
 
13.07.15
16:24
(17) ИСТИНА, вопрос не в этом ))
19 John83
 
13.07.15
16:24
(17) тут можно и не смотреть - истину
в чем вопрос-то?
20 Ненавижу 1С
 
гуру
13.07.15
16:25
а какая вам разница? если бы в условии была функция, которая еще и данные меняла

а так - все равно
21 Одинесю
 
13.07.15
16:30
(20) Вот строишь запрос, в условие зная (16) ты будешь вначале менее ресурсоемкие отборы пихать, т.е. сначала простые, посложнее, в конце совсем сложные. Ну, к примеру.
22 sash-ml
 
13.07.15
16:30
(12) в общем случае будет проверять условия по порядку, но оптимизатор sql может изменить порядок проверки предикатов согласно плану выполнения запроса, если в условии сначала идет проверка на вхождение в выборку из вложенного запроса и потом простое логическое сравнение, то первым может провериться второе условие(более простое).
23 Ненавижу 1С
 
гуру
13.07.15
16:35
(21) на всех СУБД?
24 Одинесю
 
13.07.15
16:38
(23) В этом и вопрос - всегда ли? ))
25 sash-ml
 
13.07.15
16:44
+(22)
вот пример когда не по порядку, а по весу процессорного времени
ВЫБРАТЬ
    ВЫБОР
        КОГДА "АД0010325" В
                    (ВЫБРАТЬ
                        Справочник.Номенклатура.Код
                    ИЗ
                        Справочник.Номенклатура)
                ИЛИ 1 / 0 = 6
            ТОГДА "гуд"
        ИНАЧЕ "бед"
    КОНЕЦ КАК Поле1
26 rs_trade
 
13.07.15
16:45
В запросах хз как движок субд работает. Есть там стоимость вычисления, как то от этого еще зависит.
27 igork1966
 
13.07.15
16:48
(0) Не надо тебе этого знать. Это как рассчитывать на одинаковый порядок записей при выборке без сортировки. Иначе будут неприятные сюрпризы.
28 rs_trade
 
13.07.15
16:49
(21) нафиг это не надо. отборы надо пихать что бы в индексы попадали, а не порядком их вычисления заботиться.
29 Одинесю
 
13.07.15
16:49
(25) Подтверждаю, на скуле ошибку выдает.
30 Одинесю
 
13.07.15
16:52
(29) Но по весу процессорного времени как раз и предлагается строить порядок ИЛИ в условии...
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой