2016-10-31 3 views
0

PostgreSQLデータベースを使用してネストされたJSONファイルを生成しようとしています。 Person_tbl、Log_tbl、Person_Log_tblという3つのテーブルがあります。後者は、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: 
    .... 
} 

今私は、同じユーザーが、彼らが持っているが、多くのログに返されると、各ユーザーの下で1つのログを返すSQLクエリを持っている:私は、最終的な結果は次のようなものを見てみたいです。正しいユーザーの下ですべてのログを一緒に結合する方法を理解できません。ここに私の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 

おかげ

答えて

0

私はあなたが一緒に値を集計し、group byからl.log_idを削除する必要があると思う:

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;