Имя: Пароль:
1C
1С v8
Помогите разобраться с порядком соединений запроса
0 Игорь_МММ
 
16.09.15
17:37
такой кусок запроса:
|ВЫБРАТЬ
    |    СчетОтПоставщикаСоставСчета.Количество,
    |    СчетОтПоставщикаСоставСчета.Номенклатура,
    |    0
    |ИЗ
    |    Документ.Поездка КАК Поездка
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Поездка.Поставщики КАК ПоездкаПоставщики
    |            ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетОтПоставщика.СоставСчета КАК СчетОтПоставщикаСоставСчета
    |            ПО ПоездкаПоставщики.Счет = СчетОтПоставщикаСоставСчета.Ссылка
    |        ПО (ПоездкаПоставщики.Ссылка = Поездка.Ссылка)
    |ГДЕ
    |    Поездка.ДатаПоездки > &ТекВремя
    |    И Поездка.ДатаПоездки <= &ДатаНач
    |    И СчетОтПоставщикаСоставСчета.Ссылка.Приход = ЛОЖЬ

как происходят соединения: сначала все таблицы соединяются, а потом на них накладываются условия, или сначала выбираются записи соответствующие условиям и потом соединяются. Хотелось бы окончательно понять, чтобы избежать возможных NULL
1 Апош
 
16.09.15
17:39
сначала фром, потом вхере
2 aleks_default
 
16.09.15
17:40
как оптимизатор решит
3 Игорь_МММ
 
16.09.15
17:43
правильно понимаю, что в приведенном в (1) куске могут могут быть нули, как раз из-за СчетОтПоставщикаСоставСчета.Ссылка.Приход = ЛОЖЬ . Правильно? (2) можно по-подробнее плз
4 Апош
 
16.09.15
17:45
(3) нули в третьем поле будут обязательно
5 Игорь_МММ
 
16.09.15
17:46
(4) ну , шутник )) а в первых двух?
6 Гёдза
 
16.09.15
17:47
"поездки" скоре всего будет индекс сик. потом нестед лукапс поставщики
7 Апош
 
16.09.15
17:47
(5) никогда не интересовался подобной мерзостью ©
наверное, что-то из поездок или нуллы
8 Апош
 
16.09.15
17:48
(7) *от записей правой таблицы
9 itlikbez
 
16.09.15
17:49
(0) Язык запросов - декларативный язык. У него в принципе не должно быть "сначала" и "потом". У него "все и сразу".
10 Апош
 
16.09.15
17:49
(9) Ицик не согласен
11 mehfk
 
16.09.15
18:03
(0) Сделай хотя бы так
    |ВЫБРАТЬ
    |    СчетОтПоставщикаСоставСчета.Количество,
    |    СчетОтПоставщикаСоставСчета.Номенклатура,
    |    0
    |ИЗ
    |    Документ.Поездка КАК Поездка
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Поездка.Поставщики КАК ПоездкаПоставщики
    |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетОтПоставщика.СоставСчета КАК СчетОтПоставщикаСоставСчета
    |            ПО ПоездкаПоставщики.Счет = СчетОтПоставщикаСоставСчета.Ссылка
    |                И СчетОтПоставщикаСоставСчета.Ссылка.Приход = ЛОЖЬ
    |        ПО (ПоездкаПоставщики.Ссылка = Поездка.Ссылка)
    |ГДЕ
    |    Поездка.ДатаПоездки > &ТекВремя
    |    И Поездка.ДатаПоездки <= &ДатаНач
12 ssh-2013
 
16.09.15
18:09
(0) Логика такова, чтобы представлять результат - сначала соединяются по условиям описанным в "ПО", а условия в "ГДЕ" накладываются на результат сосединения
13 18_plus
 
16.09.15
18:23
чтоб совсем не было null используется внутреннее соединение, в остальных случаях появление null является нормальным.