sql >> Base de Datos >  >> RDS >> Mysql

Ordenar filas por filas en otra tabla para completar una lista What's Hot

Puede hacer esto con una combinación izquierda:

SELECT levels.*, coalesce(sum(votes.vote),0) as total_vote
FROM levels 
LEFT JOIN votes ON votes.levelid = levels.id
WHERE votes.date >=( CURDATE() - INTERVAL 7 DAY ))
GROUP BY levels.id
ORDER BY coalesce(sum(votes.vote),0) desc;

Los coalesces aquí aseguran que los niveles que no han sido votados obtengan un puntaje (en lugar de nulo) y se clasifiquen correctamente.