POSTGRESQL: Как объединить таблицы в столбце массива? - PullRequest
0 голосов
/ 27 марта 2019

Я хотел бы попросить вашей помощи создать запрос postgresql, чтобы я мог оставить таблицы категорий и продуктов и заменить производственные имена фактическими названиями продуктов.

Ниже вы можете увидеть структуры таблиц и желаемый результат для запроса

Таблица категорий:

              name               |              productnums                                 
---------------------------------+------------------------------
 Books                           | {605,614,663,647,645,619,627}
 Kitchen                         | {345,328}
 Electronics                     | {145,146}

Таблица продуктов:

              id                 |              name                                 
---------------------------------+----------------------
 145                             | LCD Monitor
 147                             | Mouse
 345                             | Glass

Желаемый вывод:

              name               |              productnums                                 
---------------------------------+-------------------------------------------
 Electronics                     | {LCD Monitor,Mouse}

Я буду признателен за любую поддержку.

1 Ответ

1 голос
/ 27 марта 2019

Вы можете использовать оператор ANY в состоянии JOIN, а затем array_agg для агрегирования названий продуктов.

select c.name, 
       array_agg(p.name) as products
from categories c 
   left join products p on p.id = any(c.productnums)
group by c.name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...