sql >> Database teknologi >  >> RDS >> Mysql

Sådan summerer du et antal gange fra flere tabeller

Her er SQL Fiddle viser, at nedenstående forespørgsel faktisk virker. Som du kan se, opretter jeg tabellerne og udfylder dem med de data, du har i dit spørgsmål. Så udfører jeg nedenstående forespørgsel for at indsamle de data, du har brug for. Jeg har bekræftet tællingerne, og de beregner korrekt.

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


  1. Sådan finder du pg_config-stien

  2. Oracle:Brug af Pseudo-kolonneværdi i den samme Select-sætning

  3. Kunne ikke indlæse driverklassen com.mysql.jdbc.Driver

  4. Konverter Coldfusion-script i Oracle-visning med CASE og iteration