sql presto запрос, чтобы объединить 2 таблицы интерактивно
Мне нужно сделать это в запросе SQL. Дайте мне знать, если это возможно
У меня есть таблица, которая имеет отображение как (table1)
num,value
2,'h'
3,'b'
5,'c'
Теперь у меня есть другая таблица, которая имеет эти значения (table2)
name, config
"test1",45
"test2",20
Теперь мне нужен запрос sql, который добавит еще один столбец в мою таблицу2, проверив, делятся ли значения столбца конфигурации на table1.num, и если да, сопоставит значения table1.value с ним
так что теперь после запроса sql он должен стать
name, config, final
"test1",45, bc
"test2",20, hc
Пожалуйста, дайте мне знать, если я могу сформировать запрос для этого
2 ответа
Вы можете с помощью перекрестного соединения использовать функцию мода https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html и group_concat https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html
select t2.name,t2.config,group_concat(t1.value separator '') final
from table1 t1
cross join table2 t2
where t2.config % t1.num = 0
group by t2.name,t2.config
+-------+--------+-------+
| name | config | final |
+-------+--------+-------+
| test1 | 45 | bc |
| test2 | 20 | hc |
+-------+--------+-------+
2 rows in set (0.00 sec)
Ответ от P.Salmon должен работать для MySQL. Если вы используете Presto, это будет работать:
SELECT t2.name,
t2.config,
array_join(array_agg(t1.value),'','') AS final
FROM table1 t1
CROSS JOIN table2 t2
WHERE t2.config % t1.num = 0
GROUP BY t2.name,
t2.config