2016-11-08 78 views
0

我需要在postgres中的一個查詢中將子表中的字段分組。在postgres中將字段從一個到多個關係分組

我有以下數據

Stores: 

| id | name | 
|----|------| 
| 1 | abcd | 

Features: 

| id | store | name | other | 
|----|-------|------|-------| 
| 1 | 1  | door | metal | 
| 2 | 1  | fork | green | 

我有這個疑問

SELECT 
    stores.id, 
    stores.name, 
    concate_ws(',', features.id, features.name, features.other) 
FROM stores 
LEFT JOIN features 
    ON(features.store=stores.id) 
WHERE stores.id =1 
GROUP BY stores.id, features.id; 

這是最好的,我已經這麼遠,但單產2元組

1, abcd, (1,door,metal) 
1, abcd, (2,fork,green) 

我'想要能夠獲得一行'|''級聯像這樣

1, abcd ,(1,door,metal|2,fork,green) 

回答

0

使用string_agg()

SELECT stores.id, 
     stores.name, 
     string_agg(concate_ws(',', features.id, features.name, features.other), '|') 
FROM stores 
LEFT JOIN features ON features.store=stores.id 
WHERE stores.id =1 
GROUP BY stores.id, stores.name; 
相關問題