У меня есть две таблицы с большими запросами.Таблица 1 имеет схему {id:String, colors:Array[String]}
и выглядит как
| id | colors |
|------|-----------------------------|
| id_1 | ["blue", "green", "orange"] |
| id_2 | ["red" , "blue", "green" ] |
| ... | .... |
, а таблица 2 связывает цвета с числами со схемой {color:String, number:Int}
и выглядит как
| color | number |
|-------|--------|
| "blue"| 0 |
| "red" | 1 |
| ... | ... |
Я хочу создать таблицу, котораявыглядит как
| id | numbers |
|----|---------|
|id_1| [0,3,4] |
|id_2| [1,0,3] |
| ...|... |
, полученный путем сопоставления каждого цвета в таблице 1 с соответствующим номером.Единственное решение, которое я могу придумать, это
SELECT id, ARRAY_AGG(number) AS numbers
FROM (table_1 CROSS JOIN UNNEST(table_1.colors) as color) JOIN table_2 USING(color)
GROUP BY email
, но это занимает очень много времени (возможно, потому что перекрестное соединение)