Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mysql Inner Join and Group Dengan mengulangi baris

Dengan asumsi report kepada users adalah 1:1 hubungan, maka Anda harus dapat menyelesaikan masalah Anda dengan melakukan agregasi komentar di tabel turunan, dan bergabung dengan itu sebagai gantinya:

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 

Jika laporan dapat memiliki beberapa pengguna, Anda perlu menggabungkan informasi pengguna dalam tabel turunan dengan cara yang sama.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mendapatkan Catatan Terakhir Di Setiap Grup Di MySQL

  2. mySQL mengonversi varchar ke tanggal

  3. Boolean vs tinyint(1) untuk nilai boolean di MySQL

  4. Kueri db MySQL menggunakan java

  5. MySQL Pilih Where In Many to Many