2016-11-29 69 views
2

我对PostgreSQL相对较新,并试图找出如何解决以下情形。比方说,我有三个表:内部加入“多对多”表格行作为数组

| store_id | 
|----------| 
| 1  | 
| 2  | 
| 3  | 

产品

| product_id | 
|------------| 
|  1  | 
|  2  | 
|  3  | 

store_has_product

| store_id | product_id | 
|----------|------------| 
|  1 |  3  | 
|  1 |  2  | 
|  2 |  1  | 
|  3 |  3  | 
|  1 |  1  | 
|  3 |  1  | 
|  3 |  2  | 

现在我想建立一个查询,以便所有产品的专卖店表,并将它们组合在一个数组,让我有一个这样的输出:

| store_id | products | 
|----------|-----------| 
| 1  | {3, 2, 1} | 
| 2  | {2}  | 
| 3  | {3, 1, 2} | 

我知道,数组是可能在PostgreSQL ,但我不知道如何编写这样的查询,并且可能已经花费了太多时间来思考解决方案。

感谢您的帮助!

+1

你能提供给我们到目前为止你已经建立查询? – Gabriel

回答

2

如果您使用的版本8.4或更高版本,可以使用array_agg

SELECT store_id, array_agg(product_id::text) as products 
FROM store_has_product 
GROUP BY store_id