Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySql sélectionne la valeur par défaut s'il n'y a pas de résultats ?

Je ne sais pas pourquoi vous incluez le comment_id dans votre liste SELECT si vous voulez juste les utilisateurs et leur classement. Voulez-vous uniquement leur classement sur ce commentaire particulier ? Je vais donner une solution pour l'instant qui suppose que vous voulez juste une liste complète des membres avec des classements :

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

(cela suppose que vote_value et best ne sont PAS des colonnes NULL ou que MySQL les ignorera lors du calcul des valeurs SUM - je crois que c'est le cas, mais je n'ai pas testé cela)