Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So summieren Sie eine Mehrfachzählung aus mehreren Tabellen

Hier ist die SQL-Fiddle zeigt, dass die folgende Abfrage tatsächlich funktioniert. Wie Sie sehen können, erstelle ich die Tabellen und fülle sie mit den Daten, die Sie in Ihrer Frage haben. Dann führe ich die folgende Abfrage aus, um die benötigten Daten zu sammeln. Ich habe die Zählungen überprüft und sie werden korrekt berechnet.

SELECT PM.*, 
  (
    PM.SongCount + PM.LessonCount + 
    PM.SongCommCount + PM.LessonCommCount
  ) AS TotalCount 
FROM (
  SELECT P.poster_id, 
    (
      SELECT COUNT(poster_id) 
      FROM song S 
      WHERE P.poster_id = S.poster_id
    ) AS SongCount, 
    (
      SELECT COUNT(poster_id) 
      FROM lesson L 
      WHERE P.poster_id = L.poster_id
    ) AS LessonCount, 
    (
      SELECT COUNT(poster_id) 
      FROM SongComment SC 
      WHERE P.poster_id = SC.poster_id
    ) AS SongCommCount, 
    (
      SELECT COUNT(poster_id) 
      FROM LessonComment LC 
      WHERE P.poster_id = LC.poster_id
    ) AS LessonCommCount 
  FROM poster AS P 
  LIMIT 0, 50
) AS PM
ORDER BY 
  (
    PM.SongCount + PM.LessonCount + 
    PM.SongCommCount + PM.LessonCommCount
  ) DESC