查询行并将许多行连接为JSON数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询行并将许多行连接为JSON数组相关的知识,希望对你有一定的参考价值。
我希望通过id加入三个表,结果是三个json列,每个列的内容。
我面临的问题是,每个cat_request
有很多cat_request_fields
,我目前正在将cat_request_fields
作为一个对象,而不是一个对象数组。
这个查询得到了cat_requests
和cat_request_fields
的结果集。
SELECT
row_to_json("cat_requests") AS cat_request,
array_agg(row_to_json("cat_request_fields")) AS cat_request_fields
FROM
"cat_requests"
LEFT OUTER JOIN "cat_request_fields" ON "cat_requests"."id" = "cat_request_fields"."cat_request_id"
GROUP BY
"cat_requests"."id"
LIMIT 10;
这个查询得到了cats
和cat_requests
的结果集。
SELECT
row_to_json("cat_requests") as cat_request,
row_to_json("cats") as cat
FROM
"cat_requests",
"cats"
WHERE
"cat_requests"."cat_id" = "cats"."id"
LIMIT 1;
我正在寻找一个可以给我两者组合的查询......
如何修改此查询以将cat_request_fields
映射为行数组而不仅仅是一行。
答案
SELECT
row_to_json("cat_requests") AS cat_request,
(select row_to_json("cats".*) as cats from "cats" where "cats"."id" = "cat_requests"."cat_id"),
array_agg(row_to_json("cat_request_fields")) AS cat_request_fields
FROM
"cat_requests"
INNER JOIN "cat_request_fields" ON "cat_requests"."id" = "cat_request_fields"."cat_request_id"
GROUP BY
"cat_requests"."id"
LIMIT 6;
以上是关于查询行并将许多行连接为JSON数组的主要内容,如果未能解决你的问题,请参考以下文章