|
Правое соединение не добавляет записи если данные не пересекаются | ☑ | ||
---|---|---|---|---|
0
kobayoshi
31.05.24
✎
11:13
|
Подскажите, если есть запрос вида:
ВЫБРАТЬ ДоступныеОстаткиПланируемыхПоступлений.Характеристика, ДоступныеОстаткиПланируемыхПоступлений.Склад, ДоступныеОстаткиПланируемыхПоступлений.Количество Поместить ОжидаемыеПоступления ИЗ РегистрСведений.ДоступныеОстаткиПланируемыхПоступлений КАК ДоступныеОстаткиПланируемыхПоступлений ГДЕ ДоступныеОстаткиПланируемыхПоступлений.Номенклатура = &Ссылка И ДоступныеОстаткиПланируемыхПоступлений.Количество > 0 Отдельно он возвращает что-то вроде этого: Характеристика|Склад|Количество
M, белый|Основной|50 Я хочу совместить это с информацией о свободных остатках. Если склад с остатками и ожидаемыми поступлениями совпадает, информация выводится. А вот если товара на остатках нет, то ожидаемые поступления уже не будут показаны. Вот вторая часть запроса: ВЫБРАТЬ СвободныеОстаткиОстатки.Характеристика, СвободныеОстаткиОстатки.Склад, СвободныеОстаткиОстатки.ВНаличииОстаток, ОжидаемыеПоступления.Количество ИЗ РегистрНакопления.СвободныеОстатки.Остатки(&ТекДата, ) КАК СвободныеОстаткиОстатки ПОЛНОЕ СОЕДИНЕНИЕ ОжидаемыеПоступления КАК ОжидаемыеПоступления ПО (ОжидаемыеПоступления.Характеристика = СвободныеОстаткиОстатки.Характеристика) И (ОжидаемыеПоступления.Склад = СвободныеОстаткиОстатки.Склад) ГДЕ СвободныеОстаткиОстатки.Номенклатура = &Ссылка Получится что-то такое: Характеристика|Склад|ВНаличииОстаток|Количество
S, белый|Магазин|8|0 L, белый|Магазин2|7|0 А нужно, что бы результат из первого запроса тоже выводился: Характеристика|Склад|ВНаличииОстаток|Количество
M, белый|Основной|0|50 S, белый|Магазин|8|0 L, белый|Магазин2|7|0 |
|||
1
Волшебник
31.05.24
✎
11:13
|
В теме ПРАВОЕ, а в запросе ПОЛНОЕ... Странно-странно
|
|||
2
Волшебник
31.05.24
✎
11:14
|
отбор по номенклатуре надо загнать сюда:
РегистрНакопления.СвободныеОстатки.Остатки(&ТекДата, сюда) |
|||
3
kobayoshi
31.05.24
✎
11:27
|
(1) Извиняюсь, опечатка, имел ввиду Полное
|
|||
4
kobayoshi
31.05.24
✎
11:32
|
(2) Действительно, так записи добавляются в конец результата! Но почему-то поля склад и хар-ка у строк из первой таблицы пустые... Вот так получается:
Характеристика|Склад|ВНаличииОстаток|Количество S, белый|Магазин|8| L, белый|Магазин2|7| |||50 |
|||
5
Волшебник
31.05.24
✎
11:37
|
(4) Таблички у Вас кривые...
|
|||
6
Мультук
31.05.24
✎
11:37
|
(3)
Берём ВСЕ данные из "ОжидаемыеПоступления" присоединяем к ним данные из свободных остатков Люди, которые зевают одно из условий связи, в данном случае по номенклатура - ССЗБ ВЫБРАТЬ ОжидаемыеПоступления.Характеристика, ОжидаемыеПоступления.Склад, ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0), ОжидаемыеПоступления.Количество ИЗ ОжидаемыеПоступления КАК ОжидаемыеПоступления ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&ТекДата, ) КАК СвободныеОстаткиОстатки ПО (ОжидаемыеПоступления.Характеристика = СвободныеОстаткиОстатки.Характеристика) И (ОжидаемыеПоступления.Склад = СвободныеОстаткиОстатки.Склад) И (ОжидаемыеПоступления.Номенклатура = СвободныеОстаткиОстатки.Номенклатура) ГДЕ СвободныеОстаткиОстатки.Номенклатура = &Ссылка |
|||
7
Волшебник
31.05.24
✎
11:38
|
(3) А Вы знаете, что ПОЛНОЕ = ЛЕВОЕ + ПРАВОЕ ?
|
|||
8
mmg
31.05.24
✎
12:14
|
(0) ГДЕ превращает ПОЛНОЕ соединение в ПРАВОЕ
|
|||
9
kobayoshi
31.05.24
✎
13:46
|
(8) Спасибо, без него заработало. Но, как я указывал в (4), почему-то пустые поля Склад и Хар-ка присоединяются, только Количество заполнено.
В итоге я решил не заморачиваться. В моём случае достаточно отдельно получить таблицу планируемых поступлений и при выводе результата искать в ней. Там данных не так много, работает шустро, хоть и не так изящно, как хотелось бы) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |