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