postgres returns 空行如果 json_agg 没有找到任何东西
posgres returns empty rows if json_agg doesn' find nothing
大家好,我在使用 json_agg
时遇到了问题
我有两个 tables:文档和 subs 看起来像这样
Docs(
id primary key,
title,
name,
code
)
Subs(
id primary key,
title,
name,
code,
idoc fk
)
我使用这个查询来检索它们
SELECT *,s.subdocs FROM docs d INNER JOIN(
SELECT idoc,json_agg(
json_build_object(
'id',id,'title',title,'name',name,'code',code,
)) AS subdocs FROM subs GROUP BY subs.idoc
) AS s ON s.idoc = d.idoc
WHERE d.id = 4
当有与文档关联的子文档时,它似乎可以工作,但是当没有查询时,查询不会 return 任何东西所以我如何检查 json 的结果agg 是空的并且 return 至少文档的字段 table?
看来您需要使用左连接:
SELECT *,s.subdocs FROM docs d
LEFT JOIN (
SELECT idoc,json_agg(json_build_object('id',id,'title',title,'name',name,'code',code)) AS subdocs
FROM subs GROUP BY subs.idoc
) AS s ON s.idoc = d.idoc
WHERE d.id = 4
大家好,我在使用 json_agg
时遇到了问题我有两个 tables:文档和 subs 看起来像这样
Docs(
id primary key,
title,
name,
code
)
Subs(
id primary key,
title,
name,
code,
idoc fk
)
我使用这个查询来检索它们
SELECT *,s.subdocs FROM docs d INNER JOIN(
SELECT idoc,json_agg(
json_build_object(
'id',id,'title',title,'name',name,'code',code,
)) AS subdocs FROM subs GROUP BY subs.idoc
) AS s ON s.idoc = d.idoc
WHERE d.id = 4
当有与文档关联的子文档时,它似乎可以工作,但是当没有查询时,查询不会 return 任何东西所以我如何检查 json 的结果agg 是空的并且 return 至少文档的字段 table?
看来您需要使用左连接:
SELECT *,s.subdocs FROM docs d
LEFT JOIN (
SELECT idoc,json_agg(json_build_object('id',id,'title',title,'name',name,'code',code)) AS subdocs
FROM subs GROUP BY subs.idoc
) AS s ON s.idoc = d.idoc
WHERE d.id = 4