|
Помогите разобраться с порядком соединений запроса | ☑ | ||
---|---|---|---|---|
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 является нормальным.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |