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