|
Проблема с левым соединением | ☑ | ||
---|---|---|---|---|
0
extrim-style
15.07.11
✎
14:17
|
Хелп! Имеются 2 результата запроса в виде таблиц. В Таб1 12 строк, имеются значения Неопределено. В Таб2 10 строк. Мне необходимо добавить в Таб1 колонку из Таб2, связав эти таблицы по 3-м полям. Соединяю левым соединением. В результате получаю 10 строк, а не 12. Строки со значением Неопределено не попадают в результирующую таблицу. Почему?
|
|||
1
Jstunner
15.07.11
✎
14:17
|
запрос покажи
|
|||
2
acsent
15.07.11
✎
14:18
|
НЕ верю
|
|||
3
extrim-style
15.07.11
✎
14:19
|
Запрос.Текст = "ВЫБРАТЬ
| яЕК_ДвижениеЗатратОборотыОбороты.ЦентрУчетаИсточник КАК ЦентрЗатрат, | яЕК_ДвижениеЗатратОборотыОбороты.ЭлементУчета КАК СтатьяЗатрат, | яЕК_ДвижениеЗатратОборотыОбороты.СуммаЗатратОборот * 1000 КАК Сумма, | яЕК_ДолиДополнительногоРаспределенияЗатрат.Коэффициент КАК Количество |ИЗ | РегистрНакопления.яЕК_ДвижениеЗатратОбороты.Обороты( | &НачалоПериода, | &КонецПериода, | , | ЦентрУчета = &ЦентрЗатрат | И ВидУчетаЗатрат = &ВидУчетаЗатрат | И ЦентрУчета.ТипЦЗ.Код <> ""000000014"" | И ЦентрУчета.ТипЦЗ.Код <> ""000000015"" | И ЦентрУчета.ТипЦЗ.Код <> ""000000016"") КАК яЕК_ДвижениеЗатратОборотыОбороты | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.яЕК_ДолиДополнительногоРаспределенияЗатрат КАК яЕК_ДолиДополнительногоРаспределенияЗатрат | ПО яЕК_ДвижениеЗатратОборотыОбороты.ВидУчетаЗатрат = яЕК_ДолиДополнительногоРаспределенияЗатрат.ВидУчетаЗатрат | И яЕК_ДвижениеЗатратОборотыОбороты.ЦентрУчета = яЕК_ДолиДополнительногоРаспределенияЗатрат.ЦентрЗатрат | И яЕК_ДвижениеЗатратОборотыОбороты.ЦентрУчетаИсточник = яЕК_ДолиДополнительногоРаспределенияЗатрат.ЦентрЗатратИсточник |ГДЕ | яЕК_ДолиДополнительногоРаспределенияЗатрат.Период МЕЖДУ &НачалоПериода И &КонецПериода | И яЕК_ДолиДополнительногоРаспределенияЗатрат.ВидУчетаЗатрат = &ВидУчетаЗатрат | И яЕК_ДолиДополнительногоРаспределенияЗатрат.ЦентрЗатрат = &ЦентрЗатрат"; ТЗ = Запрос.Выполнить().Выгрузить(); |
|||
4
Jstunner
15.07.11
✎
14:24
|
причина в ГДЕ
|
|||
5
extrim-style
15.07.11
✎
14:25
|
по отдельности работают нормально, а связываются не правильно. Остаётся 10 записей.
|
|||
6
Reset
15.07.11
✎
14:27
|
яЕк xD
Ответ в (4), очевидно, правильный. |
|||
7
extrim-style
15.07.11
✎
14:29
|
а как исправить? что-то я не понял в чем причина, ведь в ГДЕ только условие на вторую таблицу накладывается. И отдельно выбирается нормально 10 записей.
|
|||
8
Reset
15.07.11
✎
14:30
|
не на вторую, а на соединенные две
|
|||
9
viktor_vv
15.07.11
✎
14:31
|
(7) Добавь эти условия в ПО и убери из ГДЕ.
|
|||
10
extrim-style
15.07.11
✎
14:38
|
Спасибо!
А может кто-нибудь объяснит, почему так нужно делать? |
|||
11
Jstunner
15.07.11
✎
14:43
|
с условием в ГДЕ на соединяемую таблицу левое соединение вырождается во внутреннее
|
|||
12
73
15.07.11
✎
14:45
|
Потому как эти условия на NULL-ы накладываются, а любое сравнение с NULL-ом - Ложь.
|
|||
13
extrim-style
15.07.11
✎
17:17
|
(12) а почему они накладываются на NULL-ы, когда в ГДЕ условия только для второй таблицы?
|
|||
14
73
15.07.11
✎
17:28
|
(13) См.(8) - они накладываются на результат.
|
|||
15
Prapor
15.07.11
✎
17:38
|
от жесть то какая, скоро оператор присваивания будет вызывать вопросы.
|
|||
16
extrim-style
15.07.11
✎
18:01
|
(14) понял. спс
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |