sql >> データベース >  >> RDS >> Mysql

行を繰り返すことによるMysql内部結合とグループ化

    reportを想定 users1:1です 関係があれば、派生テーブルでコメントの集計を行い、代わりにそれに参加することで問題を解決できるはずです:

    SELECT report.text, 
           Json_arrayagg(Json_object('display_name', users.display_name, 'photo_url' 
                         , 
                         users.photo_url))                       AS USER,
           rc.COMMENTS
    FROM   report 
    INNER JOIN users ON users.id = report.user_id 
    LEFT JOIN (
      SELECT report_id,
             Json_arrayagg(Json_object('text', report_comments.text, 'display_name', 
                                       report_comments.user_id)) AS COMMENTS
      FROM report_comments 
      GROUP BY report_id
    ) rc ON rc.report_id = report.id 
    WHERE  report.user_id = :userId 
    GROUP  BY report.id 
    

    レポートに複数のユーザーを含めることができる場合は、同じ方法で派生テーブルにユーザー情報を集約する必要があります。




    1. 同じ構造でサーバーが異なる2つのMySQLテーブルを同期するにはどうすればよいですか?

    2. アプリケーションまたはデータベースのタイムスタンプ列を更新しますか?

    3. データソースが接続の確立を拒否しました、サーバーからのメッセージ:接続が多すぎます

    4. @@ DATEFIRST –SQLServerで週の最初の日を取得する