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

MySql wählt den Standardwert aus, wenn es keine Ergebnisse gibt?

Ich bin mir nicht sicher, warum Sie die comment_id in Ihre SELECT-Liste aufnehmen, wenn Sie nur Benutzer und ihre Rankings möchten. Möchten Sie nur deren Ranking zu diesem bestimmten Kommentar? Ich gebe vorerst eine Lösung, die davon ausgeht, dass Sie nur eine vollständige Mitgliederliste mit Ranglisten möchten:

SELECT
    M.member_id,
    M.user_id,
    M.avatar,
    COALESCE(SUM(C.vote_value), 0) AS vote_value_sum,
    COALESCE(SUM(C.best), 0) AS best_sum,
    COALESCE(SUM(C.vote_value), 0) + SUM(C.best) * 10 AS total_value
FROM
    Members M
LEFT OUTER JOIN Comments C ON
    C.author_id = M.member_id
GROUP BY
    M.member_id
ORDER BY
    total_value DESC
LIMIT 0, 20

(Dies setzt voraus, dass vote_value und best NICHT NULL-Spalten sind oder dass MySQL diese bei der Berechnung von SUM-Werten ignoriert - ich glaube, dass dies der Fall ist, aber ich habe das nicht getestet)