Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैसकल इनर जॉइन एंड ग्रुप बाई रिपीट रो

मान लें कि report users . के लिए एक 1: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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. गतिशील रूप से चेकबॉक्स बनाना

  2. mysql_* या mysqli_* पर pdo के लाभ

  3. एक तालिका के भीतर अतिव्यापी (दिनांक/समय) पंक्तियों का पता लगाएं

  4. स्कीमा () MySQL में फ़ंक्शन

  5. PHP कनेक्शन विफल:SQLSTATE [HY000] [2002] कनेक्शन ने मना कर दिया