|   |   | 
| 
 | Объединение двух таблиц по значениям одной колонки | ☑ | ||
|---|---|---|---|---|
| 0
    
        grum01 10.01.20✎ 05:48 | 
        Всех с прошедшими!
 Не могу осилить, как объединить несколько таблиц, полученных из запросов, по одинаковым значениям колонки. Например, есть у меня две одинаковых таблицы по две колонки: дата и количество. Количество строк может отличаться. Надо из них сделать одну общую с колонками: дата, количество1, количество2. Чтобы данные по количеству вывелись в нужных строках. | |||
| 1
    
        seevkik 10.01.20✎ 05:52 | 
        Объединить и сгруппировать?     | |||
| 2
    
        grum01 10.01.20✎ 05:56 | 
        (1) они физически из разных запросов; одним запросом получить нельзя.
 Надо вывести в отчет количество по каждой дате. | |||
| 3
    
        grum01 10.01.20✎ 05:57 | 
        Вернее так: данные получаются в одном запросе но в разных виртуальных таблицах. Как потом вывести их, распределив количество по датам?     | |||
| 4
    
        seevkik 10.01.20✎ 06:02 | 
        (3) Что по вашему "виртуальная таблица"?     | |||
| 5
    
        GreenSCI 10.01.20✎ 06:02 | 
        Пакетный запрос не предлагать?     | |||
| 6
    
        grum01 10.01.20✎ 06:04 | 
        (5) предлагать. все варианты рассматриваю     | |||
| 7
    
        seevkik 10.01.20✎ 06:05 | 
        Предлагаю пакетный запрос.     | |||
| 8
    
        grum01 10.01.20✎ 06:12 | 
        (7) Отлично.
 Возможно будет понятнее так: ----------------------------------------------- ВЫБРАТЬ НАЧАЛОПЕРИОДА(vl_МониторОбработкиЗаказов.ВремяСборки, ЧАС) КАК Час, vl_МониторОбработкиЗаказов.Вес ПОМЕСТИТЬ тзЗаказыНаСборке ИЗ РегистрСведений.vl_МониторОбработкиЗаказов КАК vl_МониторОбработкиЗаказов ГДЕ vl_МониторОбработкиЗаказов.ВремяСборки >= &НачалоПериода И vl_МониторОбработкиЗаказов.ВремяСборки <= &КонецПериода СГРУППИРОВАТЬ ПО НАЧАЛОПЕРИОДА(vl_МониторОбработкиЗаказов.ВремяСборки, ЧАС), vl_МониторОбработкиЗаказов.Вес ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НАЧАЛОПЕРИОДА(vl_МониторОбработкиЗаказов.ВремяУпаковки, ЧАС) КАК Час, vl_МониторОбработкиЗаказов.Вес ПОМЕСТИТЬ тзЗаказыНаУпаковке ИЗ РегистрСведений.vl_МониторОбработкиЗаказов КАК vl_МониторОбработкиЗаказов ГДЕ vl_МониторОбработкиЗаказов.ВремяУпаковки >= &НачалоПериода И vl_МониторОбработкиЗаказов.ВремяУпаковки <= &КонецПериода СГРУППИРОВАТЬ ПО НАЧАЛОПЕРИОДА(vl_МониторОбработкиЗаказов.ВремяУпаковки, ЧАС), vl_МониторОбработкиЗаказов.Вес ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ тзЗаказыНаСборке.Час КАК ЧасСбр, тзЗаказыНаУпаковке.Час КАК ЧасУпк, СУММА(тзЗаказыНаСборке.Вес) КАК Вес, СУММА(тзЗаказыНаУпаковке.Вес) КАК Вес1 ИЗ тзЗаказыНаСборке КАК тзЗаказыНаСборке, тзЗаказыНаУпаковке КАК тзЗаказыНаУпаковке СГРУППИРОВАТЬ ПО тзЗаказыНаСборке.Час, тзЗаказыНаУпаковке.Час ----------------------------------------------- как в результатирующем запросе объединить данные по часам в одну строку? | |||
| 9
    
        seevkik 10.01.20✎ 06:16 | 
        (8) Не поверишь, объединить)     | |||
| 10
    
        DrZombi гуру 10.01.20✎ 06:17 | 
        (0) Начни писать запрос, мы посм... поможем :)     | |||
| 11
    
        grum01 10.01.20✎ 06:26 | 
        (9) как?     | |||
| 12
    
        grum01 10.01.20✎ 06:27 | 
        (10) обхохочешься     | |||
| 13
    
        Umga2002 10.01.20✎ 06:46 | 
        Соединения в конструкторе укажи....     | |||
| 14
    
        DrZombi гуру 10.01.20✎ 06:47 | 
        (8) Два запроса 1 и 2-ой через "Объединить Все". После еще можно сгруппировать, перенеся твой два запроса во внутренний запрос :)
 Третий твой запрос лишний. | |||
| 15
    
        catena 10.01.20✎ 06:47 | 
        (11)С помощью "ОБЪЕДИНИТЬ".     | |||
| 16
    
        seevkik 10.01.20✎ 06:49 | 
        (15) Я говорил, что не поверит     | |||
| 17
    
        grum01 10.01.20✎ 07:10 | 
        А если третья таблица такая же добавляется? Весь алгоритм рушится?     | |||
| 18
    
        grum01 10.01.20✎ 07:16 | 
        (15) хоть объединяй, хоть соединяй левое-правое-полное: количество строк в итоговой таблице ограничивается количеством строк в первой таблице. Таким образом, если в первой таблице 2 строки, а во второй 5, то выводятся только 2.     | |||
| 19
    
        runoff_runoff 10.01.20✎ 07:19 | 
        объединить все     | |||
| 20
    
        Пузан 10.01.20✎ 07:24 | 
        ОБЪЕДИНИТЬ ВСЕ
 А потом СГРУППИРОВАТЬ ПО | |||
| 21
    
        Chameleon1980 10.01.20✎ 07:44 | 
        (18) уже проверил?     | |||
| 22
    
        Мимохожий Однако 10.01.20✎ 07:49 | 
        (18) Не стесняйся. Снимай покров со своего кода.     | |||
| 23
    
        catena 10.01.20✎ 07:52 | 
        (18)Ну ведь вы же врете. Не стыдно?     | |||
| 24
    
        grum01 10.01.20✎ 07:58 | 
        Проверяю. Кажется нашел "заковыку" в виде одинаковых имен колонок.
 Там просто запрос гораздо сложнее, чем я приводил. Меняю ручками. | |||
| 25
    
        grum01 10.01.20✎ 08:16 | 
        Не, ребята. Не получается через объединение.
 Вот честный код: ВЫБРАТЬ ВЫБОР КОГДА vl_МониторОбработкиЗаказов.Склад = ЗНАЧЕНИЕ(Перечисление.vl_ТипыСкладов.Желтый) ТОГДА vl_МониторОбработкиЗаказов.Вес ИНАЧЕ 0 КОНЕЦ КАК ЖелтыйВес, НАЧАЛОПЕРИОДА(vl_МониторОбработкиЗаказов.ВремяСборки, ЧАС) КАК Час ИЗ РегистрСведений.vl_МониторОбработкиЗаказов КАК vl_МониторОбработкиЗаказов ГДЕ vl_МониторОбработкиЗаказов.ВремяСборки >= &НачалоПериода И vl_МониторОбработкиЗаказов.ВремяСборки <= &КонецПериода ОБЪЕДИНИТЬ ВЫБРАТЬ ВЫБОР КОГДА vl_МониторОбработкиЗаказов.Склад = ЗНАЧЕНИЕ(Перечисление.vl_ТипыСкладов.Желтый) ТОГДА vl_МониторОбработкиЗаказов.Вес ИНАЧЕ 0 КОНЕЦ, НАЧАЛОПЕРИОДА(vl_МониторОбработкиЗаказов.ВремяУпаковки, ЧАС) ИЗ РегистрСведений.vl_МониторОбработкиЗаказов КАК vl_МониторОбработкиЗаказов ГДЕ vl_МониторОбработкиЗаказов.ВремяУпаковки >= &НачалоПериода И vl_МониторОбработкиЗаказов.ВремяУпаковки <= &КонецПериода ----------------------------------------------- в итоге получается, что значения веса суммируются из обоих таблиц; а они должны быть разными | |||
| 26
    
        Cyberhawk 10.01.20✎ 08:16 | 
        Полное соединение     | |||
| 27
    
        catena 10.01.20✎ 08:27 | 
        (25)ВЫБРАТЬ
 ВЫБОР КОГДА vl_МониторОбработкиЗаказов.Склад = ЗНАЧЕНИЕ(Перечисление.vl_ТипыСкладов.Желтый) ТОГДА vl_МониторОбработкиЗаказов.Вес ИНАЧЕ 0 КОНЕЦ КАК ЖелтыйВес, NULL как другойЖелтыйвес, НАЧАЛОПЕРИОДА(vl_МониторОбработкиЗаказов.ВремяСборки, ЧАС) КАК Час ИЗ РегистрСведений.vl_МониторОбработкиЗаказов КАК vl_МониторОбработкиЗаказов ГДЕ vl_МониторОбработкиЗаказов.ВремяСборки >= &НачалоПериода И vl_МониторОбработкиЗаказов.ВремяСборки <= &КонецПериода ОБЪЕДИНИТЬ ВЫБРАТЬ NULL ВЫБОР КОГДА vl_МониторОбработкиЗаказов.Склад = ЗНАЧЕНИЕ(Перечисление.vl_ТипыСкладов.Желтый) ТОГДА vl_МониторОбработкиЗаказов.Вес ИНАЧЕ 0 КОНЕЦ, НАЧАЛОПЕРИОДА(vl_МониторОбработкиЗаказов.ВремяУпаковки, ЧАС) ИЗ РегистрСведений.vl_МониторОбработкиЗаказов КАК vl_МониторОбработкиЗаказов ГДЕ vl_МониторОбработкиЗаказов.ВремяУпаковки >= &НачалоПериода И vl_МониторОбработкиЗаказов.ВремяУпаковки <= &КонецПериода | |||
| 28
    
        catena 10.01.20✎ 08:27 | 
        Ну, не NULL, а 0 для чисел, конечно же.     | |||
| 29
    
        grum01 10.01.20✎ 08:36 | 
        (27) Во! То, что надо! добавить пустую колонку..
 А как теперь это все сгруппировать по времени? А то несколько строк с одинаковым периодом выводит. По какому полю? | |||
| 30
    
        catena 10.01.20✎ 08:41 | 
        (29)Сгруппировать по дате, суммируя остальное.
 Я понимаю, что в жизни разные выкрутасы бывают, но за 5 лет ведь должна была промелькнуть информация, что в 1С есть встроенная справка, не? | |||
| 31
    
        grum01 10.01.20✎ 09:21 | 
        (30) Да в справке такого фиг найдешь, даже, если оно там есть. Все функции перерывать не будешь ведь. А с таким первый раз столкнулся; мало знаю запросы, каюсь.
 Для меня проблема группировки в том, что поля-то разные в этих двух запросах. А через конструктор группировка в данном случае прописывается только для каждого отдельно. Насколько понимаю, надо эти два запроса запихнуть во вложенный запрос, а его потом группировать? | |||
| 32
    
        catena 10.01.20✎ 09:28 | 
        (31)Ну я вот открыла в справке про секцию ОБЪЕДИНИТЬ, там даже пример и даже и добавлением поля. 
 Да, группировать результат. | |||
| 33
    
        seevkik 10.01.20✎ 09:32 | 
        Ну это сильно, за 5 лет с запросами не поработать     | |||
| 34
    
        grum01 10.01.20✎ 09:36 | 
        (33) с запросами работаю часто и много; но с элементарными, "одноуровневыми", так сказать. Ну не было никогда нужды во вложенных запросах и их объединении.     | |||
| 35
    
        grum01 10.01.20✎ 09:37 | 
        (32) Спасибо вам большое! С группировкой разобрался.
 Человеческого вам счастья и удачи! | |||
| 36
    
        Xapac модератор 10.01.20✎ 14:12 | 
        (0)стаж 4 года. странные вопросы или просто тролинг     | |||
| 37
    
        kalleka 05.02.20✎ 15:35 | 
        (0) Не в тему, но цвет индикатора получилось поменять?)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |