我想请您帮忙创建一个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}
我将不胜感激。
答案 0 :(得分:1)
您可以在联接条件下使用ANY
运算符,然后使用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;