2016-11-29 66 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