Postgres使用行到行JSON的嵌套JSON数组

Postgres使用行到行JSON的嵌套JSON数组,json,postgresql-9.2,Json,Postgresql 9.2,我正在尝试使用2个表创建嵌套的json数组 我有两张表:日记和日记 模式是- 日记账:日记账ID,总金额 journaldetail:journaldetailid、journalidfk、账户、金额 期刊和期刊细节之间的关系是一对多的 我想要以下格式的输出: { journalid : 1, totalamount : 1000, journaldetails : [ { journaldetailid : j1, account : "abc",

我正在尝试使用2个表创建嵌套的json数组

我有两张表:日记和日记

模式是-

日记账:日记账ID,总金额

journaldetail:journaldetailid、journalidfk、账户、金额

期刊和期刊细节之间的关系是一对多的

我想要以下格式的输出:

{  journalid : 1,
totalamount : 1000,
journaldetails : [ 
   {
      journaldetailid : j1,
      account : "abc",
      amount : 500 
   },
   {
      journaldetailid : j2,
      account : "def",
      amount : 500 
   }
]}
但是,通过按照此命令编写此查询,查询是:

select j.*, row_to_json(jd) as journal from journal j
inner join (
  select * from journaldetail
) jd on jd.sjournalidfk = j.sjournalid
输出如下:

{  journalid : 1,
totalamount : 1000,
journaldetails : 
   {
      journaldetailid : j1,
      account : "abc",
      amount : 500 
   }
}
{  journalid : 1,
totalamount : 1000,
journaldetails : 
   {
      journaldetailid : j2,
      account : "def",
      amount : 500 
   }
}
我希望子表数据作为父表中的嵌套数组。

我从以下位置找到了答案:

以下是查询:

select row_to_json(t)
from (
  select sjournalid,
    (
      select array_to_json(array_agg(row_to_json(jd)))
      from (
        select sjournaldetailid, saccountidfk
        from btjournaldetail
        where j.sjournalid = sjournalidfk        
      ) jd
    ) as journaldetail
  from btjournal j
) as t

这将以数组格式提供输出。

I这仍然是PostgreSQL 12+的最佳方法?