2

我有两张桌子。一个是产品列表,一个是其许多属性的列表。(这已经从我的原始模型中简化了。;))

prods有两列:idname
taxons包含三列:idnameprod_id

Prods有四个记录:

编号 | 姓名
= = = = = =
 1 | 船
 2 | 树
 3 | 灯
 4 | 苏打

Taxons有十五条记录:

编号 | 姓名 | prod_id
= = = = = = = = = = = = = =
 1 | 明亮 | 3
 2 | 微风 | 1
 3 | 绿色 | 2
 4 | 湿 | 1
 5 | 坚固 | 2
 6 | 阴暗 | 2
 7 | 古董| 3
 8 | 落叶 | 2
 9 | 浮力 | 1
 10 | 起泡 | 4
 11 | 平静| 2
 12 | 无忧无虑 | 1
 13 | 大| 1
 14 | 甜 | 4
 15 | 黄铜 | 3

我想要的是一个使用and加入的taxons查询,但只返回 4 行,所以是这样的:prodsprods.idtaxons.prod_id

(所需)结果:

1 | 船| 高分辨率照片| CLIPARTO 微风 | 湿 | 浮力 | 无忧无虑 | 大的
2 | 树 | 绿色 | 坚固 | 阴暗 | 落叶 | 镇定
3 | 灯| 明亮 | 古董| 黄铜
4 | 苏打水| 起泡 | 甜的

我不知道该去哪里,我尝试了各种联合和连接的组合,但没有找到任何有效的方法。我们正在使用 postgres。有任何想法吗?

4

2 回答 2

3

要在一列中获取所有值,您可以使用array_agg()

select p.id, array_agg(t.name) list
from prods p
inner join taxons t
   on p.id = t.prod_id
group by p.id

请参阅带有演示的 SQL Fiddle

于 2012-08-23T21:08:51.553 回答
2

应该能够适应GROUP_CONCAT本文中的等价物:

Postgresql GROUP_CONCAT 等效?

于 2012-08-23T20:46:38.287 回答