|
Почему разные результаты у этих запросов? | ☑ | ||
---|---|---|---|---|
0
Fuas4
12.11.13
✎
17:37
|
Объясните мне, почему вот этот запрос вернет мне только те записи из регистра остатков, для которых есть установленная цена:
ВЫБРАТЬ | ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток, | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК Артикул, | ЦеныНоменклатурыСрезПоследних.Цена |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних | ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура |ГДЕ | ТоварыНаСкладахОстатки.Склад = &Склад | И ТоварыНаСкладахОстатки.ВНаличииОстаток > 0 | И ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦены А вот этот запрос вернет все записи из регистра остатков, даже если по ним нет установленных цен: ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.ВНаличииОстаток как Остаток, | ТоварыНаСкладахОстатки.Номенклатура.Артикул, | ВложенныйЗапрос.Цена |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки | Левое СОЕДИНЕНИЕ (ВЫБРАТЬ | ЦеныНоменклатуры.Цена КАК Цена, | ЦеныНоменклатуры.Номенклатура КАК Номенклатура | ИЗ | РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ГДЕ | ЦеныНоменклатуры.ВидЦены = &ВидЦены) КАК ВложенныйЗапрос | ПО ТоварыНаСкладахОстатки.Номенклатура = ВложенныйЗапрос.Номенклатура |ГДЕ | ТоварыНаСкладахОстатки.Склад = &Склад | И ТоварыНаСкладахОстатки.ВНаличииОстаток > 0 Разве левое соединение не должно присоединять ко ВСЕЙ левой таблице записи из правой? |
|||
1
zak555
12.11.13
✎
17:39
|
из-за
> И ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦены |
|||
2
Fuas4
12.11.13
✎
17:40
|
(1) т.е. это условие накладывается уже на результат запроса, а не на таблицу цен?
|
|||
3
zak555
12.11.13
✎
17:40
|
ВЫБРАТЬ
| ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток, | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК Артикул, | ЦеныНоменклатурыСрезПоследних.Цена |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( , Склад = &Склад) КАК ТоварыНаСкладахОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних | ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура |
|||
4
zak555
12.11.13
✎
17:40
|
(2) да
|
|||
5
Fuas4
12.11.13
✎
17:43
|
(4) Спасибо! Как в (3) умею, просто пытаюсь понять суть :)
|
|||
6
mikecool
12.11.13
✎
17:47
|
(5) блин, мог бы я что либо делать правильно, но нихера не понимать как - да мне бы цены не было!
|
|||
7
zak555
12.11.13
✎
17:48
|
(5) ну ты правило написал в 2
|
|||
8
Fuas4
12.11.13
✎
17:48
|
(6) Учу программировать на уровне интуиции. Дорого :)
|
|||
9
Fuas4
12.11.13
✎
17:49
|
(7) ога, понял, Еще раз спасибо!
|
|||
10
mikecool
12.11.13
✎
17:52
|
(8) не, спасибо ,я уж лучше с пониманием как нить
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |