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
トリッキーな部分は、2つの合計呼び出しです-投票フィールドが1
の場合 、次にvote=1
これはTRUEと評価され、MySQLはSUM()の目的で整数1にキャストします。 1でない場合は、falseと評価され、0にキャストされ、SUM()に対して何も実行されません。
おっと、持っている必要があります
GROUP BY list_items.item.id
最後に。