我正在通过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
映射为行的数组而不是一个行。
答案 0 :(得分:0)
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;