6

私はテーブルを持っています:

Project table

id name
-------
1  A
2  B

Assignment table

id name project_id
-------------------
1  A1   1
2  A2   1
3  A3   2

次のように、プロジェクトから作成された割り当ての名前を使用して各プロジェクトを返すクエリを作成したいと思います。

project_id  assignments
-----------------------
1            A1,A2
2            A3

それを達成する方法はありますか?

4

1 に答える 1

16

テーブルarray_aggを結合し、コンマで区切られた値を結合するために使用できます

SELECT a.id, array_agg(b.name) assignments
FROM    Project a
        INNER JOIN assignment b
          ON a.id = b.project_ID
GROUP BY a.id

SQLFiddle デモ

または使用してSTRING_AGG

SELECT a.id, STRING_AGG(b.name, ', ' ORDER BY b.name) assignments
FROM    Project a
        INNER JOIN assignment b
          ON a.id = b.project_ID
GROUP BY a.id

SQLFiddle デモ

于 2012-10-23T07:56:04.497 に答える