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
Bagian yang sulit adalah dua panggilan jumlah - Jika bidang suara adalah 1
, lalu vote=1
yang mengevaluasi ke TRUE, yang akan dilemparkan MySQL ke bilangan bulat 1 untuk keperluan SUM(). Jika bukan 1, maka itu dievaluasi menjadi false yang dilemparkan ke 0 dan tidak melakukan apa pun untuk SUM().
ups, harus punya
GROUP BY list_items.item.id
di akhir.