|
Как осуществить условие в запросе, чтобы работало полное соединение? | ☑ | ||
---|---|---|---|---|
0
Prog111
02.10.16
✎
15:15
|
Есть скелет запроса:
ВЫБРАТЬ РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, ВложенныйЗапрос.НоменклатураВозврат КАК НоменклатураВозврат ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВозвратТоваровОтКлиентаТовары.Номенклатура КАК НоменклатураВозврат ИЗ Документ.ВозвратТоваровОтКлиента.Товары КАК ВозвратТоваровОтКлиентаТовары ГДЕ ВозвратТоваровОтКлиентаТовары.Ссылка.ХозяйственнаяОперация = &ХозяйственнаяОперация) КАК ВложенныйЗапрос ПО (РеализацияТоваровУслугТовары.Номенклатура = ВложенныйЗапрос.НоменклатураВозврат) ГДЕ РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА И РеализацияТоваровУслугТовары.Ссылка.Дата >= &НачалоПериода И РеализацияТоваровУслугТовары.Ссылка.Дата <= &КонецПериода В результате запроса записи из второй таблицы ("ВложенныйЗапрос") выходят не все, так как на первую таблицу есть ограничения типа "ГДЕ". А как сделать, чтобы можно было и условия поставить на таблицы, и чтобы выходили все записи (там где нет записей - выходил NULL)? |
|||
1
и тут и там
02.10.16
✎
15:25
|
Нужно убрать вот это
" ГДЕ ВозвратТоваровОтКлиентаТовары.Ссылка.ХозяйственнаяОперация = &ХозяйственнаяОперация" |
|||
2
jsmith
02.10.16
✎
15:27
|
Я ничо не понял
|
|||
3
Prog111
02.10.16
✎
15:30
|
Попробую переформатировать:
"ВЫБРАТЬ | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, | ВложенныйЗапрос.НоменклатураВозврат КАК НоменклатураВозврат |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ВозвратТоваровОтКлиентаТовары.Номенклатура КАК НоменклатураВозврат | ИЗ | Документ.ВозвратТоваровОтКлиента.Товары КАК ВозвратТоваровОтКлиентаТовары | ГДЕ | ВозвратТоваровОтКлиентаТовары.Ссылка.ХозяйственнаяОперация = &ХозяйственнаяОперация) КАК ВложенныйЗапрос | ПО (РеализацияТоваровУслугТовары.Номенклатура = ВложенныйЗапрос.НоменклатураВозврат) |ГДЕ | РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА | И РеализацияТоваровУслугТовары.Ссылка.Дата >= &НачалоПериода | И РеализацияТоваровУслугТовары.Ссылка.Дата <= &КонецПериода" |
|||
4
и тут и там
02.10.16
✎
15:32
|
непонятка не в запросе а в том что ты хочешь в итоге
|
|||
5
и тут и там
02.10.16
✎
15:33
|
если тебе не нужны условия - убери их.
|
|||
6
Prog111
02.10.16
✎
15:34
|
(3) Вот здесь первая таблица - это "РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура"
Вторая таблица - это вложенный запрос "ВложенныйЗапрос.НоменклатураВозврат КАК НоменклатураВозврат". Если на первую таблицу не накладывать эти условия: |ГДЕ | РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА | И РеализацияТоваровУслугТовары.Ссылка.Дата >= &НачалоПериода | И РеализацияТоваровУслугТовары.Ссылка.Дата <= &КонецПериода" то результат будет классическим полным соединением двух таблиц, когда присутствуют все записи из обеих таблиц. Но, поскольку я наложил условие на первую таблицу, то из-за этого не попадают все записи из второй таблицы. Как сделать так, чтобы и условия на первую таблицу были, и чтобы из-за этих условий не ограничивалось количество записей во второй таблице? |
|||
7
Prog111
02.10.16
✎
15:34
|
(4) Мне нужно классическое полное соединение двух таблиц. Чтобы были присутствовали все записи из обеих таблиц.
|
|||
8
и тут и там
02.10.16
✎
16:00
|
каких двух таблиц? у тебя их три.
две во вложенном запросе со полным объединением, ты на них потом кладешь условие и получаешь третью таблицу к на которую тоже кладешь условие если не нужны условия - убери их "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, | ВложенныйЗапрос.НоменклатураВозврат КАК НоменклатураВозврат |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ВозвратТоваровОтКлиентаТовары.Номенклатура КАК НоменклатураВозврат | ИЗ | Документ.ВозвратТоваровОтКлиента.Товары КАК ВозвратТоваровОтКлиентаТовары) КАК ВложенныйЗапрос | ПО (РеализацияТоваровУслугТовары.Номенклатура = ВложенныйЗапрос.НоменклатураВозврат) " |
|||
9
Prog111
02.10.16
✎
16:33
|
(8) Мне нужно наложить это условие на первую таблицу, а потом соединить её со второй. Кажется, дошло - первую таблицу (Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары) тоже сделать вложенным запросом?
|
|||
10
ERWINS
02.10.16
✎
17:00
|
выбери данные одним запросом из регистра накопления.
помести во временную таблицу, а потом через объединить все всерни тогда не будет полного соединения. |
|||
11
и тут и там
02.10.16
✎
17:35
|
(9) как вариант, но временная таблица (как тебе сказал (10) лучше)
кстати ты не группируешь. тебе принципиально получать кучу одинаковых позиций? |
|||
12
Prog111
02.10.16
✎
17:41
|
(11) Я группирую, просто упростил запрос до минимума, чтобы саму методику понять.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |