在关联表中的列下嵌套数据

时间:2016-10-31 00:38:52

标签: sql json database postgresql

我正在尝试使用PostgreSQL数据库生成嵌套的JSON文件。我有三个表:Person_tbl,Log_tbl,Person_Log_tbl,其中后者是包含Person_id和Log_id的关联表,作为前面表的外键。我希望最终结果看起来像这样:

{
    username: 
      log1 {
        log_id: 1,
        activity_id: 1,
        logdate: 2016-10-25
      }
      log2 {
        log_id: 2,
        activity_id: 1,
        logdate: 2016-10-26
      }
    username2: 
     ....
}

现在,我有一个SQL查询,在每个用户下返回1个日志,但是返回相同的用户,无论他们拥有多少日志。我无法弄清楚如何在正确的用户下将所有日志加入到一起。这是我的SQL查询:

SELECT p.username, row_to_json(l.*)
 FROM person_log_tbl pl
  INNER JOIN person_tbl p on pl.person_id = p.person_id
  INNER JOIN log_tbl l on pl.log_id = l.log_id
  GROUP BY p.username, l.log_id

由于

1 个答案:

答案 0 :(得分:0)

我认为您需要将这些值汇总在一起并从group by中移除SELECT p.username, json_agg(l.*) FROM person_log_tbl pl INNER JOIN person_tbl p ON pl.person_id = p.person_id INNER JOIN log_tbl l ON pl.log_id = l.log_id GROUP BY p.username;

Basic