Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mysql Tham gia bên trong và Nhóm theo hàng lặp lại

Giả sử report tới users1:1 thì bạn sẽ có thể giải quyết vấn đề của mình bằng cách tổng hợp nhận xét trong một bảng dẫn xuất và thay vào đó tham gia vào bảng đó:

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 

Nếu một báo cáo có thể có nhiều người dùng, bạn sẽ cần tổng hợp thông tin người dùng trong một bảng dẫn xuất theo cách tương tự.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để tạo cơ sở dữ liệu localhost bằng cách sử dụng mysql?

  2. Cân bằng tải cơ sở dữ liệu trong đám mây - MySQL Master Failover với ProxySQL 2.0:Part One (Deployment)

  3. mysql chọn số hàng giữa khoảng thời gian

  4. Thực hiện một truy vấn tham gia trong loopback.io

  5. Cập nhật bảng mysql với dữ liệu từ bảng khác