Mik*_*kou 8 sql postgresql json
我正在使用postgres 9.4,我有以下查询:
SELECT pid, code, name FROM activity, (
SELECT code FROM project
) projects WHERE activity.pcode = projects.code;
Run Code Online (Sandbox Code Playgroud)
返回以下关系:
pid | code | name
-------------------------------
1 | p1 | activity1
1 | p3 | activity2
2 | p1 | activity3
2 | p2 | activity4
2 | p3 | activity5
Run Code Online (Sandbox Code Playgroud)
我试图编写相同的查询,但我得到项目代码一个活动名称作为相对于每个"pid"的json数组
所以我正在寻找一个返回如下内容的查询:
pid | json
------------------------------------------------------------------------------------
1 | [{'code': 'p1', 'name': 'activity1'}, {'code': 'p3', 'name': 'activity2'}]
2 | [{'code': 'p1', 'name': 'activity3'}, {'code': 'p2', 'name': 'activity4'}, {'code': 'p3', 'name': 'activity5'}]
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?在此先感谢您的帮助
UPDATE
这是我做的(这与Abelisto所说的很接近):
SELECT pid, json_agg(json_build_object('code', code, 'name', name)) AS agg
FROM activity JOIN (
SELECT code FROM project
) AS p ON p.code=activity.pcode
GROUP BY pid;
Run Code Online (Sandbox Code Playgroud)
Abe*_*sto 10
select
pid,
json_agg(json_build_object('code',code,'name',name))
from
...
group by
pid
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5121 次 |
| 最近记录: |