问题描述
大家好,我在使用 json_agg 时遇到了问题
我有两个表:看起来像这样的文档和子表
Docs(
id primary key,title,name,code
)
Subs(
id primary key,code,idoc fk
)
我使用这个查询来检索它们
SELECT *,s.subdocs FROM docs d INNER JOIN(
SELECT idoc,json_agg(
json_build_object(
'id',id,'title','name','code',)) AS subdocs FROM subs GROUP BY subs.idoc
) AS s ON s.idoc = d.idoc
WHERE d.id = 4
当有一个与该文档关联的子文档时它似乎工作,但当没有时查询不返回任何内容,所以我如何检查 json agg 的结果是否为空并至少返回字段文档表?
解决方法
似乎您需要使用左连接:
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