SELECT list_items.text, list_items.item_id, SUM(votes.vote=1) AS upvote, SUM(votes.vote=-1) AS downvote
FROM list_items
LEFT JOIN votes ON list_items.item_id = votes.item_id
Det knepiga är de två summanropen - Om röstfältet är 1
, sedan vote=1
som utvärderas till TRUE, vilket MySQL kommer att casta till ett heltal 1 för SUM(). Om det inte är 1, evalueras det till false som kastas till en 0 och gör ingenting för SUM().
Hoppsan, måste ha
GROUP BY list_items.item.id
på slutet.