2016-11-08 1 views
0

ポストグルで1つのクエリで子テーブルのフィールドをグループ化する必要があります。ポストグルでフィールドを1から多くの関係にグループ化する

私はこのクエリ

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; 

に持って

Stores: 

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

Features: 

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

私はこれは私がこれまで持って最善の方法ですが、以下のデータを持っている利回り2組

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

I '|'という機能を使って1つの行を取得できるようにするそう

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; 
関連する問題