当前,我正在使用如下查询从单个表(使用Postgres)返回JSON:
SELECT array_to_json(array_agg(row_to_json(t)))
FROM (
SELECT posts.id, posts.title FROM posts
) t
哪个返回一个JSON数组,如下所示:
[{"id": 1, "title": "what"}]
但是,我想在一个查询中从多个表返回JSON,以便最终的JSON看起来像这样:
{
"posts": [{"id": 1, "title": "what"}],
"comments": [{"id": 1, "post_id": 1, "body": "i dunno"}]
}
想法?
谢谢。
答案 0 :(得分:1)
我对您的表或如何创建数组一无所知。但是,如果您只想将所有评论记录聚合到一个数组中,而将所有帖子聚合到另一个数组中,则可能是您的代码:
SELECT
json_build_object(
'posts', (SELECT json_agg(row_to_json(p)) FROM posts p),
'comments', (SELECT json_agg(row_to_json(c)) FROM comments c)
)