|
Полное соединение | ☑ | ||
---|---|---|---|---|
0
BuHu
11.10.11
✎
13:52
|
Не могу понять как работает Полное соединение . есть документ Перемещение товаров , на основании него водят документы - Расходный ордер на товары и Приходный ордер на товары , табличные части этих трех документов должны быть идентичны . нужен отчет который бы показывал расхождения . пишу вот такой запрос
|ВЫБРАТЬ | ВЫБОР | КОГДА Перемещение.Номенклатура ЕСТЬ NULL | ТОГДА ВЫБОР | КОГДА Расходный.Номенклатура ЕСТЬ NULL | ТОГДА Приходный.Номенклатура | ИНАЧЕ Расходный.Номенклатура | КОНЕЦ | ИНАЧЕ Перемещение.Номенклатура | КОНЕЦ КАК НоменклатураПеремещение, | ВЫБОР | КОГДА Перемещение.Ссылка ЕСТЬ NULL | ТОГДА ВЫБОР | КОГДА Расходный.Ссылка.ДокументПередачи ЕСТЬ NULL | ТОГДА Приходный.Ссылка.ДокументПеремещения | ИНАЧЕ Расходный.Ссылка.ДокументПередачи | КОНЕЦ | ИНАЧЕ Перемещение.Ссылка | КОНЕЦ КАК Перемещение, | ВЫБОР | КОГДА Перемещение.ХарактеристикаНоменклатуры ЕСТЬ NULL | ТОГДА ВЫБОР | КОГДА Расходный.ХарактеристикаНоменклатуры ЕСТЬ NULL | ТОГДА Приходный.ХарактеристикаНоменклатуры | ИНАЧЕ Расходный.ХарактеристикаНоменклатуры | КОНЕЦ | ИНАЧЕ Перемещение.ХарактеристикаНоменклатуры | КОНЕЦ КАК ХарПеремещение, | ВЫБОР | КОГДА Перемещение.Ссылка.СкладОтправитель ЕСТЬ NULL | ТОГДА ВЫБОР | КОГДА Расходный.Ссылка.ДокументПередачи.СкладОтправитель ЕСТЬ NULL | ТОГДА Приходный.Ссылка.ДокументПеремещения.СкладОтправитель | ИНАЧЕ Расходный.Ссылка.ДокументПередачи.СкладОтправитель | КОНЕЦ | ИНАЧЕ Перемещение.Ссылка.СкладОтправитель | КОНЕЦ КАК СкладОтправитель, | ВЫБОР | КОГДА Перемещение.Ссылка.СкладПолучатель ЕСТЬ NULL | ТОГДА ВЫБОР | КОГДА Расходный.Ссылка.ДокументПередачи.СкладПолучатель ЕСТЬ NULL | ТОГДА Приходный.Ссылка.ДокументПеремещения.СкладПолучатель | ИНАЧЕ Расходный.Ссылка.ДокументПередачи.СкладПолучатель | КОНЕЦ | ИНАЧЕ Перемещение.Ссылка.СкладПолучатель | КОНЕЦ КАК СкладПолучатель, | ЕСТЬNULL(Приходный.Количество, 0) КАК КоличествоПриход, | ЕСТЬNULL(Перемещение.Количество, 0) КАК КоличествоПеремещение, | ЕСТЬNULL(Расходный.Количество, 0) КАК КоличествоРасход |ИЗ | Документ.ПеремещениеТоваров.Товары КАК Перемещение | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПриходныйОрдерНаТоварыТовары.Номенклатура КАК Номенклатура, | ПриходныйОрдерНаТоварыТовары.Количество КАК Количество, | ПриходныйОрдерНаТоварыТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ПриходныйОрдерНаТоварыТовары.Ссылка КАК Ссылка | ИЗ | Документ.ПриходныйОрдерНаТовары.Товары КАК ПриходныйОрдерНаТоварыТовары | ГДЕ | ПриходныйОрдерНаТоварыТовары.Ссылка.ДокументПеремещения ССЫЛКА Документ.ПеремещениеТоваров | И ПриходныйОрдерНаТоварыТовары.Ссылка.Дата >= &ДатаНач | И ПриходныйОрдерНаТоварыТовары.Ссылка.Дата <= &ДатаКон | И ПриходныйОрдерНаТоварыТовары.Ссылка.Проведен = ИСТИНА) КАК Приходный | ПО Перемещение.Номенклатура = Приходный.Номенклатура | И Перемещение.ХарактеристикаНоменклатуры = Приходный.ХарактеристикаНоменклатуры | И (Приходный.Ссылка.ДокументПеремещения В (Перемещение.Ссылка)) | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | РасходныйОрдерНаТоварыТовары.Номенклатура КАК Номенклатура, | РасходныйОрдерНаТоварыТовары.Количество КАК Количество, | РасходныйОрдерНаТоварыТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | РасходныйОрдерНаТоварыТовары.Ссылка КАК Ссылка | ИЗ | Документ.РасходныйОрдерНаТовары.Товары КАК РасходныйОрдерНаТоварыТовары | ГДЕ | РасходныйОрдерНаТоварыТовары.Ссылка.ДокументПередачи ССЫЛКА Документ.ПеремещениеТоваров | И РасходныйОрдерНаТоварыТовары.Ссылка.Дата >= &ДатаНач | И РасходныйОрдерНаТоварыТовары.Ссылка.Дата <= &ДатаКон | И РасходныйОрдерНаТоварыТовары.Ссылка.Проведен = ИСТИНА) КАК Расходный | ПО Перемещение.Номенклатура = Расходный.Номенклатура | И Перемещение.ХарактеристикаНоменклатуры = Расходный.ХарактеристикаНоменклатуры | И (Расходный.Ссылка.ДокументПередачи В (Перемещение.Ссылка)) |ГДЕ | Перемещение.Ссылка.Дата >= &ДатаНач | И Перемещение.Ссылка.Дата <= &ДатаКон | И Перемещение.Ссылка.Проведен = ИСТИНА | И Перемещение.Ссылка = &Ссылка но в результат попадают только товары из табличной части перемещения , т.е. если в Расходном ордере на товары есть товара которого нет в Перемещении , то он в отчет не попадает . Помогите разобраться , подскажите что в запросе не так . З.Ы. условие на расхождение пока не накладываю , т.к. изначально не все товары попадают в результат |
|||
1
Mort
11.10.11
✎
13:54
|
Условие "ГДЕ" все режет.
|
|||
2
BuHu
11.10.11
✎
13:55
|
(1) условие для перемещения?
|
|||
3
catena
11.10.11
✎
13:56
|
Условие... Условие на всю выборку... Строки, где Перемещение is null идут лесом...
|
|||
4
Mort
11.10.11
✎
13:56
|
(3) угу
|
|||
5
DrHiHi
11.10.11
✎
13:58
|
возможно проще будет через объединить все ;))
|
|||
6
DrHiHi
11.10.11
✎
14:05
|
а если еще точнее то есть такой регистр как "Товары к передачи со склада" и смотришь действительно ли по нем закрылось остатки по перемещению
|
|||
7
BuHu
11.10.11
✎
14:09
|
(6) понимаю что запросы лучше строить на регистрах , но не хотелось бы целиком переписывать запрос , может есть еще какие варианты как подправить этот запрос , что б он заработал?
|
|||
8
Mort
11.10.11
✎
14:11
|
(7) Ответ сидит в двух остальных таблицах
|
|||
9
BuHu
11.10.11
✎
14:16
|
(8) а подробней можно?
|
|||
10
BuHu
11.10.11
✎
14:17
|
+(9) сделать Перемещение тоже виртуальной таблицей и там накладывать условие?
|
|||
11
catena
11.10.11
✎
14:18
|
(9)Сформируй без итогового ГДЕ и посмотри на таблицу.
|
|||
12
hhhh
11.10.11
✎
14:18
|
(9) ну так
ГДЕ | Перемещение.Ссылка.Дата >= &ДатаНач | И Перемещение.Ссылка.Дата <= &ДатаКон | И Перемещение.Ссылка.Проведен = ИСТИНА | И Перемещение.Ссылка = &Ссылка | ИЛИ Перемещение.Ссылка ЕСТЬ NULL |
|||
13
BuHu
11.10.11
✎
14:26
|
сделал иначе , выбрал все подходящие условиям перемещения во временную таблицу , затем (10) и все заработало
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |