2

2つのテーブルがあります。1つは製品のリストであり、もう1つはそれらの多くの属性のリストです。(これは私の元のモデルから簡略化されています。;))

テーブルprodsには2つの列があります:idname
テーブルには、、、およびのtaxons3つの列がidあります。nameprod_id

Prods4つのレコードがあります:

id | 名前
= = = = = =
 1 | ボート
 2 | 木
 3 | ランプ
 4 | ソーダ

Taxons15のレコードがあります:

id | 名前| 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

私が欲しいのは、とtaxonsprods使用prods.idして結合するクエリですがtaxons.prod_id、4行しか返さないので、次のようになります。

(望ましい)結果:

1 | ボート| さわやかな| ウェット| 浮力| のんき| 大きい
2 | ツリー| 緑| 頑丈| 日陰| 落葉性| 落ち着く
3 | ランプ| 明るい| アンティーク| 真鍮
4 | ソーダ| 発泡性| 甘い

どこに行けばいいのかわからないので、ユニオンとジョインのさまざまな組み合わせを試しましたが、うまくいくものは見つかりませんでした。postgresを使用しています。何か案は?

4

2 に答える 2

3

1つの列のすべての値を取得するには、次を使用できます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 FiddlewithDemoを参照してください

于 2012-08-23T21:08:51.553 に答える
2

GROUP_CONCATこの記事の同等のものを適応させることができるはずです:

Postgresql GROUP_CONCATと同等ですか?

于 2012-08-23T20:46:38.287 に答える