2016-10-31 2 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 쿼리를 가지고있다. 올바른 사용자로 모든 로그를 결합하는 방법을 알 수 없습니다.

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; 
여기 내 SQL 쿼리입니다
관련 문제