Я начинающий погромист, не судите строго. :-)
А с SQL столкнулся вчера в первый раз.
Искать ответ в интернете уже нету сил, нигде ясного ответа не нашёл.
Возникла необходимость проверить фактическое выполнение заказов. Для этого слепил в конструкторе запрос с "полным соединением" табличных частей документов ЗаказПокупателя и РеализацияТоваровУслуг по полям Номенклатура и Контрагент.
Но почему-то в результате выполнения запроса отсутствуют данные о тех позициях номенклатуры заказов, которые совсем не были выполнены (их нет в табличной части документа РеализацияТоваровУслуг). Но это же ПОЛНОЕ соединение? Что я делаю не так? От безысходности пробовал ПРАВОЕ, ЛЕВОЕ - вожделенные "NULLи" не появляются. :-)
ВЫБРАТЬ
ЗаказПокупателяТовары.Ссылка.Номер,
ЗаказПокупателяТовары.Ссылка.Дата,
ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки,
ЗаказПокупателяТовары.Ссылка.Контрагент,
ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяТовары.Ссылка.Контрагент),
ЗаказПокупателяТовары.Номенклатура,
ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяТовары.Номенклатура),
ЗаказПокупателяТовары.Количество КАК Количество,
РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер1,
РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата1,
РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент1,
ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Ссылка.Контрагент) КАК КонтрагентПредставление1,
РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура1,
ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура) КАК НоменклатураПредставление1,
РеализацияТоваровУслугТовары.Количество КАК Количество1
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ПОЛНОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ПО РеализацияТоваровУслугТовары.Ссылка.Контрагент = ЗаказПокупателяТовары.Ссылка.Контрагент
И РеализацияТоваровУслугТовары.Номенклатура = ЗаказПокупателяТовары.Номенклатура
ГДЕ
РеализацияТоваровУслугТовары.Ссылка.Дата >= &ДатаНач
И РеализацияТоваровУслугТовары.Ссылка.Дата < &ДатаКон
И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки >= &ДатаНач
И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаКон
На другом форуме говорят, что у меня получилось ВНУТРЕННЕЕ соединение. Действительно, результат запроса так и выглядел.
Даже предложили рабочий вариант (пока не пробовал, сейчас нет возможности). Но разжевывать "для чайника" не хотят. А мне всё ещё не понятно, в чём суть исправления. Ну да ладно, буду вникать глубже и тщательнее. Спасибо им за советы - есть уже над чем поразмыслить.
ВЫБРАТЬ
ЗаказПокупателяТовары.Ссылка.Номер,
ЗаказПокупателяТовары.Ссылка.Дата,
ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки,
ЗаказПокупателяТовары.Ссылка.Контрагент,
ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяТовары.Ссылка.Контрагент),
ЗаказПокупателяТовары.Номенклатура,
ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяТовары.Номенклатура),
ЗаказПокупателяТовары.Количество КАК Количество,
РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер1,
РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата1,
РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент1,
ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Ссылка.Контрагент) КАК КонтрагентПредставление1,
РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура1,
ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура) КАК НоменклатураПредставление1,
РеализацияТоваровУслугТовары.Количество КАК Количество1
ИЗ
Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ПО РеализацияТоваровУслугТовары.Ссылка.Контрагент = ЗаказПокупателяТовары.Ссылка.Контрагент
И РеализацияТоваровУслугТовары.Номенклатура = ЗаказПокупателяТовары.Номенклатура
И (РеализацияТоваровУслугТовары.Ссылка.Дата >= &ДатаНач)
И (РеализацияТоваровУслугТовары.Ссылка.Дата < &ДатаКон)
ГДЕ
ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки >= &ДатаНач
И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаКон
Сообщение отредактировал logist - 18.03.14, 15:21