
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.52] |
![]() |
|
![]() |
Сообщ.
#1
,
|
|
Задача:
Нужно вывести таблицу заказанной и отгруженной номенклатуры с группировкой по документу РеализацияТоваровУслуг. Получаю данные запросом ![]() ![]() ВЫБРАТЬ ЗаказКлиентаТовары.Номенклатура КАК НоменклатураЗаказ, ЗаказКлиентаТовары.Упаковка КАК УпаковкаЗаказ, ЗаказКлиентаТовары.Количество КАК КоличествоЗаказ, ЗаказКлиентаТовары.Сумма КАК СуммаЗаказ, ЗаказКлиентаТовары.Ссылка КАК СсылкаЗаказ ПОМЕСТИТЬ ВТ_Заказы ИЗ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары ГДЕ ЗаказКлиентаТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон И ЗаказКлиентаТовары.Ссылка.Проведен {ГДЕ (ЗаказКлиентаТовары.Ссылка.Контрагент = &Контрагент)} ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РеализацияТоваровУслугТовары.Ссылка КАК СсылкаОтгружено, РеализацияТоваровУслугТовары.Номенклатура КАК НоменклатураОтгружено, РеализацияТоваровУслугТовары.Количество КАК КоличествоОтгружено, РеализацияТоваровУслугТовары.Сумма КАК СуммаОтгружено, РеализацияТоваровУслугТовары.Ссылка.ЗаказКлиента, РеализацияТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения ПОМЕСТИТЬ ВТ_Реализация ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Ссылка.Проведен И РеализацияТоваровУслугТовары.Ссылка.ЗаказКлиента В (ВЫБРАТЬ ЗаказКлиентаТовары.СсылкаЗаказ КАК СсылкаЗаказ ИЗ ВТ_Заказы КАК ЗаказКлиентаТовары ) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Заказы.НоменклатураЗаказ, ВТ_Реализация.ЕдиницаИзмерения, ВТ_Заказы.КоличествоЗаказ, ВТ_Заказы.СуммаЗаказ, ВТ_Реализация.КоличествоОтгружено, ВТ_Реализация.СуммаОтгружено, ВТ_Реализация.КоличествоОтгружено - ВТ_Заказы.КоличествоЗаказ КАК КоличествоРазница, ВТ_Реализация.СуммаОтгружено - ВТ_Заказы.СуммаЗаказ КАК СуммаРазница, ВТ_Реализация.СсылкаОтгружено ИЗ ВТ_Заказы КАК ВТ_Заказы ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Реализация КАК ВТ_Реализация ПО ВТ_Заказы.СсылкаЗаказ = ВТ_Реализация.ЗаказКлиента И ВТ_Заказы.НоменклатураЗаказ = ВТ_Реализация.НоменклатураОтгружено Но тут есть одно большое НО. Если в заказе или в реализации присутствует номенклатура, которой нет в одном из документов, то эта номенклатура не выводится, т.к. соединение идет по документу и номенклатуре. Мне нужно выводить всю номенклатуру. Пример вывода отчета, чтобы было понятнее https://yadi.sk/i/IhB0MWZbgcoaz |
Сообщ.
#2
,
|
|
|
Вообще как бы полное соединение автоматом подразумевает наличие ЕСТЬNULL() во всех или почти во всех полях запроса.
![]() Типа: ЕСТЬNULL(ВТ_Заказы.НоменклатураЗаказ,ВТ_Реализация.НоменклатураОтгружено) |
![]() |
Сообщ.
#3
,
|
|
Цитата evGenius @ полное соединение автоматом подразумевает наличие ЕСТЬNULL() во всех или почти во всех полях запроса. ну как бы да ))) но ЕстьNull не решает проблемы. |
Сообщ.
#4
,
|
|
|
Цитата Rust @ ну как бы да ))) но ЕстьNull не решает проблемы. Какой запрос получился? |
Сообщ.
#5
,
|
|
|
В серидину вставь
![]() ![]() Выбрать различные Номенклатура поместить База из ВТ_Заказы Объеденить Выбрать различные Номенклатура из ВТ_Реализация Потом выборка База Левое соединение ВТ_Заказы по.... левое соединение ВТ_Реализация по .... |
Сообщ.
#6
,
|
|
|
Outlander, это лишнее. Полное соединение вполне справляется с задачей, для которой оно и было создано.
|
![]() |
Сообщ.
#7
,
|
|
Переделал запрос, вроде то что надо. Завтра покажу.
|
Сообщ.
#8
,
|
|
|
evGenius Согланен справляется но так как я предложил запрос быстрее отработает. Мы не зависим от плана выполнения запроса особенно если проиндексируем таблицу база.
|
Сообщ.
#9
,
|
|
|
Outlander, согласен, логика есть
![]() |