2016-10-31 24 views
0

我想用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: 
    .... 
} 

現在我有一個返回每個用戶在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;