sql >> Database >  >> RDS >> Mysql

Mysql Inner Join en Group Door de rij te herhalen

Uitgaande van report aan users is een 1:1 relatie, dan zou u in staat moeten zijn om uw probleem op te lossen door de opmerkingen te aggregeren in een afgeleide tabel en in plaats daarvan hieraan deel te nemen:

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 

Als een rapport meerdere gebruikers kan hebben, moet u de gebruikersinformatie op dezelfde manier samenvoegen in een afgeleide tabel.




  1. Waarom kan ik geen 10 cijfers invoegen als mijn kolom INT(10) is

  2. Selecteer ontgrendelde rij in Postgresql

  3. Kan INSERT [...] ON CONFLICT worden gebruikt voor schendingen van buitenlandse sleutels?

  4. verwijder een record uit twee tabellen in php/mysql