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
La parte difficile sono le due chiamate somma - Se il campo del voto è 1
, quindi vote=1
che restituisce TRUE, che MySQL eseguirà il cast su un numero intero 1 ai fini di SUM(). Se non è 1, restituisce false, che viene convertito a 0 e non fa nulla per SUM().
ops, deve avere
GROUP BY list_items.item.id
alla fine.