|
Левое соединение в СКД | ☑ | ||
---|---|---|---|---|
0
Pasha_mix
04.07.12
✎
15:33
|
Есть запрос, в котором соеденены две таблицы, но в отчет попадают данные, как буд-то установленно внутреннее соеденение. И если на вторую таблицу накладываются условия, то они влияют и на первую, хотя не должны при левом соединении.
искал похожие вопросы, но ответа так и не нашел. подобная проблема была. v8: Левое соединение в СКД Сам запрос: ВЫБРАТЬ ОбщиеОбороты.Контрагент, ОбщиеОбороты.ДоговорНаПремии КАК ДоговорНаПремии, ОбщиеОбороты.Бренд КАК Бренд, ОбщиеОбороты.СуммаБезНДС, Дог.МинимальныйОборот, Дог.ПроцентПремии КАК ПроцентПремии ИЗ (ВЫБРАТЬ ПремииОбороты.Контрагент КАК Контрагент, ПремииОбороты.ДоговорНаПремии КАК ДоговорНаПремии, ПремииОбороты.Бренд КАК Бренд, ПремииОбороты.СуммаБезНДСОборот КАК СуммаБезНДС ИЗ РегистрНакопления.Премии.Обороты( НАЧАЛОПЕРИОДА(&ДатаОтчета, МЕСЯЦ), КОНЕЦПЕРИОДА(&ДатаОтчета, МЕСЯЦ), Месяц, ДоговорНаПремии В (ВЫБРАТЬ Дог.Ссылка ИЗ Справочник.ДоговорыКонтрагентов КАК Дог ГДЕ Дог.ПоМагнолииВЦелом = ИСТИНА И Дог.ЭтоПремии = ИСТИНА И Дог.ПериодНачисления = 1 И Дог.До >= КОНЕЦПЕРИОДА(&ДатаОтчета, МЕСЯЦ))) КАК ПремииОбороты ) КАК ПремииОбороты) КАК ОбщиеОбороты ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов.Премии КАК Дог ПО ОбщиеОбороты.Бренд = Дог.Бренд И ОбщиеОбороты.ДоговорНаПремии = Дог.Ссылка ГДЕ Дог.Ссылка.ЭтоПремии = ИСТИНА И Дог.Ссылка.До >= КОНЕЦПЕРИОДА(&ДатаОтчета, МЕСЯЦ) |
|||
1
LAAry
04.07.12
✎
15:36
|
так ты 2 раза обращаешься к договорам. зачем, если соединяешь так: "ОбщиеОбороты.ДоговорНаПремии = Дог.Ссылка"?
|
|||
2
LAAry
04.07.12
✎
15:37
|
Вернее зачем соединять здесь вообще?
|
|||
3
Classic
04.07.12
✎
15:38
|
поменяй "Где" на "И"
|
|||
4
Pasha_mix
04.07.12
✎
15:41
|
(1) Это часть запроса. там их 4 таблицы в объединении, для каждо свои таблицы договоров.
Но суть не в этом. Главное на выходе получаются 2 таблицы - Договора и Обороты. И вот хочется видеть все обороты и подтягивать к ним строки из ТЧ договоров. |
|||
5
Classic
04.07.12
✎
15:43
|
(4)
Та условия пишешь в ГДЕ - это ограничение уже на результат соединения. Т.е. в результате левого соединения у тебя получилось в какой-то строке Дог.Ссылка - NULL. И ты берешь и эту строку отфильтровываешь |
|||
6
Pasha_mix
04.07.12
✎
15:44
|
Вот эта строка?
И ОбщиеОбороты.ДоговорНаПремии = Дог.Ссылка ГДЕ Дог.Ссылка.ЭтоПремии = ИСТИНА И Дог.Ссылка.До >= КОНЕЦПЕРИОДА(&ДатаОтчета, МЕСЯЦ) |
|||
7
Classic
04.07.12
✎
15:45
|
Еще раз повторяю. Измени слово ГДЕ на слово И.
И посмотри на результат |
|||
8
Pasha_mix
04.07.12
✎
15:45
|
Если таблицу договоров закнуть во вложенную?
|
|||
9
Pasha_mix
04.07.12
✎
15:46
|
В каком месте?? у меня два раза встречается ГДЕ
|
|||
10
Classic
04.07.12
✎
15:46
|
Последнее
|
|||
11
Pasha_mix
04.07.12
✎
15:47
|
Помогло! ) Благодарю, дружище!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |