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

Trier les lignes par lignes dans un autre tableau pour remplir une liste What's Hot

Vous pouvez le faire avec une jointure à gauche :

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;

Les fusions ici garantissent que les niveaux qui n'ont pas été votés obtiennent un score (au lieu de nul) et sont triés correctement.