|
Левое соединение в запросе | ☑ | ||
---|---|---|---|---|
0
serg_buz
16.04.18
✎
10:15
|
Доброго времени! Коллеги, помогите пожалуйста, где я допустил ошибку, ни как понять не могу... Есть запрос, его смысл понять по каким заказам покупателя пришла вся номенклатура и он готов к отгрузке: ВЫБРАТЬ
ЗаказыПокупателейОстатки.ЗаказПокупателя КАК ЗаказПокупателя, ЗаказыПокупателейОстатки.Номенклатура КАК Номенклатура, ЗаказыПокупателейОстатки.КоличествоОстаток ПОМЕСТИТЬ Заказ ИЗ РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки ГДЕ ЗаказыПокупателейОстатки.Номенклатура.Услуга = ЛОЖЬ И ЗаказыПокупателейОстатки.ЗаказПокупателя.Ответственный = &Ответственный И ЗаказыПокупателейОстатки.ЗаказПокупателя.ВнутреннийСтатусЗаказаПокупателя = ЗНАЧЕНИЕ(Перечисление.СтатусЗаказаПокупателя.Запущен) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыВРезервеНаСкладахОстатки.ДокументРезерва, ТоварыВРезервеНаСкладахОстатки.Номенклатура, ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток ПОМЕСТИТЬ Остатки ИЗ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки КАК ТоварыВРезервеНаСкладахОстатки ГДЕ ТоварыВРезервеНаСкладахОстатки.Номенклатура.Услуга = ЛОЖЬ И ТоварыВРезервеНаСкладахОстатки.ДокументРезерва.Ответственный = &Ответственный И ТоварыВРезервеНаСкладахОстатки.ДокументРезерва.ВнутреннийСтатусЗаказаПокупателя = ЗНАЧЕНИЕ(Перечисление.СтатусЗаказаПокупателя.Запущен) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЗаказыПоставщикамОстатки.ЗаказПоставщику.ДокументОснование, ЗаказыПоставщикамОстатки.КоличествоОстаток ПОМЕСТИТЬ ЗаказыПоставщикам ИЗ РегистрНакопления.ЗаказыПоставщикам.Остатки КАК ЗаказыПоставщикамОстатки ГДЕ ЗаказыПоставщикамОстатки.Номенклатура.Услуга = ЛОЖЬ И ЗаказыПоставщикамОстатки.ЗаказПоставщику.ДокументОснование.Ответственный = &Ответственный И ЗаказыПоставщикамОстатки.ЗаказПоставщику.ДокументОснование.ВнутреннийСтатусЗаказаПокупателя = ЗНАЧЕНИЕ(Перечисление.СтатусЗаказаПокупателя.Запущен) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Заказ.ЗаказПокупателя КАК ЗаказПокупателя, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Заказ.Номенклатура) КАК Номенклатура, СУММА(Заказ.КоличествоОстаток) КАК КоличествоОстаток, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Остатки.ДокументРезерва) КАК ДокументРезерва, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Остатки.Номенклатура) КАК Номенклатура1, СУММА(Остатки.КоличествоОстаток) КАК КоличествоОстаток1, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказыПоставщикам.ЗаказПоставщикуДокументОснование) КАК ЗаказПоставщикуДокументОснование, СУММА(ЗаказыПоставщикам.КоличествоОстаток) КАК КоличествоОстаток2 ИЗ Заказ КАК Заказ ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК Остатки ПО Заказ.ЗаказПокупателя = Остатки.ДокументРезерва И Заказ.Номенклатура = Остатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ ЗаказыПоставщикам КАК ЗаказыПоставщикам ПО Заказ.ЗаказПокупателя = ЗаказыПоставщикам.ЗаказПоставщикуДокументОснование ГДЕ Заказ.КоличествоОстаток <= Остатки.КоличествоОстаток И ЗаказыПоставщикам.КоличествоОстаток ЕСТЬ NULL СГРУППИРОВАТЬ ПО Заказ.ЗаказПокупателя УПОРЯДОЧИТЬ ПО ЗаказПокупателя, Номенклатура Проверяю через консоль запросов первую временную таблицу "Заказ" по одному заказу покупателя вижу 4 номенклатуры, по временной таблице "Остатки" вижу 3 номенклатуры, т.е. в результат он не должен падать, а он падает, и показывает что по "Заказ.Номенклатура" = 3. Что то я, видимо, затупил с соединением, по тому что если убрать связь И Заказ.Номенклатура = Остатки.Номенклатура то в результате "Заказ.Номенклатура" = 4, как и должно быть. Не могу понять где я ошибся, подскажите пожалуйста. |
|||
1
Darych
16.04.18
✎
10:20
|
ну так у тебя условие на количествоостаток, а не на номенклатуру
|
|||
2
serg_buz
16.04.18
✎
10:39
|
Все правильно, по номенклатуре мне нужно только общее понимание пришло все или нет. Или я Вас неправильно понял?
|
|||
3
catena
16.04.18
✎
10:52
|
Условие на левую таблицу превращает левое соединение во внутреннее.
|
|||
4
Darych
16.04.18
✎
10:59
|
а (3) права... у тебя в выборку попадают позиции которые есть в обоих вт.. условие Заказ.Номенклатура = Остатки.Номенклатура в топку
|
|||
5
serg_buz
16.04.18
✎
11:22
|
(3) А можно поподробнее? Не совсем понял...
|
|||
6
serg_buz
16.04.18
✎
11:24
|
(4) Без него ни как... Не будет понятно пришел ли груз по данной номенклатуре или нет. Или можно как то по другому реализовать можно?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |