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
Trudną częścią są dwa wywołania sum — jeśli pole głosowania to 1
, a następnie vote=1
co daje wartość TRUE, którą MySQL rzuci na liczbę całkowitą 1 dla celów SUM(). Jeśli nie jest 1, to otrzymuje wartość false, która jest rzutowana na 0 i nie robi nic dla SUM().
ups, musi mieć
GROUP BY list_items.item.id
na końcu.