|   |   | 
| 
 | Как осуществить условие в запросе, чтобы работало полное соединение? | ☑ | ||
|---|---|---|---|---|
| 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) Я группирую, просто упростил запрос до минимума, чтобы саму методику понять.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |