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
Záludnou částí jsou dvě volání součtu – Pokud je pole hlasování 1
a poté vote=1
která se vyhodnotí jako TRUE, což MySQL přetypuje na celé číslo 1 pro účely SUM(). Pokud není 1, vyhodnotí se jako false, což je přetypováno na 0 a nedělá nic pro SUM().
Jejda, musím mít
GROUP BY list_items.item.id
na konci.