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

Nguồn cấp dữ liệu hoạt động của người dùng (ala facebook). Làm thế nào để nhóm các hoạt động tương tự?

Có thể bạn sẽ nhóm trên id mặt hàng của mặt hàng đang được sửa đổi - trong trường hợp này trông giống như:ua.imdbID.

Khi bạn làm điều đó, bạn sẽ mất các hàng dữ liệu khác, vì vậy bạn sẽ sử dụng GROUP_CONCAT để nhận tất cả các ID có liên quan.

GROUP_CONCAT (sa.activityID);

Vì vậy, kết quả cuối cùng của bạn sẽ là:

SELECT ua.datetime, ua.imdbID, ua.personID, GROUP_CONCAT(sa.activityID), sa.activity, m.title, m.year, p.name, umv.vote, upv.vote, r.review, t.youTubeID, ps.filename, ph.filename
FROM user_activity ua
JOIN sys_activities sa ON ua.activityID = sa.activityID
LEFT OUTER JOIN movies m ON ua.imdbID = m.imdbID
LEFT OUTER JOIN persons p ON ua.personID = p.personID
LEFT OUTER JOIN user_movies_vote umv ON umv.userID = ua.userID AND umv.imdbID = ua.imdbID
LEFT OUTER JOIN user_persons_vote upv ON upv.userID = ua.userID AND upv.personID = ua.personID
LEFT OUTER JOIN reviews r ON r.userID = ua.userID AND r.imdbID = ua.imdbID
LEFT OUTER JOIN (
        select imdbID, userID, youTubeID, max(hd) as MaxTrailerStatus
        from trailers
        group by imdbID
        ) t ON ua.imdbID = t.imdbID AND ua.userID = t.userID
LEFT OUTER JOIN (
        select imdbID, filename, max(main) as MaxPosterStatus
        from posters
        group by imdbID
        ) ps ON ua.imdbID = ps.imdbID
LEFT OUTER JOIN (
        select personID, filename, max(main) as MaxPhotosStatus
        from photos
        group by personID
        ) ph ON ua.personID = ph.personID
WHERE ua.userID = ?  GROUP BY ua.imdbID


ORDER BY ua.datetime DESC



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thông báo lỗi Chuỗi ký tự chưa kết thúc

  2. QSql ::Out và QSql ::InOut có được sử dụng ngoài việc gọi một thủ tục store không?

  3. Lỗi # 2101:Chuỗi được chuyển đến URLVariables.decode () phải được mã hóa URL

  4. Có thể loại bỏ tất cả các ràng buộc khóa ngoại trên một bảng cùng một lúc trong mySQL 5 không?

  5. Cách tốt nhất để chọn hai bản ghi đầu tiên của mỗi nhóm bằng lệnh SELECT là gì?