Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySql selecionando valor padrão se não houver resultados?


Não sei por que você está incluindo o comment_id na sua lista SELECT se você quer apenas usuários e suas classificações. Você quer apenas a classificação deles nesse comentário específico? Vou dar uma solução por enquanto que assume que você quer apenas uma lista completa de membros com classificações:
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

(isso pressupõe que vote_value e best NÃO sejam colunas NULL ou que o MySQL as desconsiderará ao calcular os valores SUM - acredito que sim, mas não testei isso)