2017-07-18 14 views
1

私はこれで苦労しています。助けてください。 私は2つのテーブル: 'items'と 'votes'を持っています。PHP MYSQLクエリ2のテーブル、合計、ソート

table "items": 
item_id (PK) | item_types | item_nickname | user_id 
    1   | apple  | My Apple  | 12 
    2   | orange | This Orange | 12 
    3   | apple  | Red Apple | 23 

table "votes": 
item_id | vote_type 
    1  | up 
    1  | up 
    1  | down 
    2  | down 
    3  | up 
    3  | up 
    3  | up 
    3  | up 

望ましい結果:

名:レッドアップル投票:4

名前:私のアップル投票:理論的には2

私はどこITEM_TYPE私のクエリは、テーブルの項目から、すべてを選択します= apple(これはvarになります)、次にitem_idのすべてについてdescでソートしますが、そのitem_typeのvote_typeを数えます。

これは私がこれまで行ってきたことですが、正しく動作しません。

SELECT * FROM items 
LEFT OUTER JOIN votes 
ON items.item_id = votes.vote_id 
WHERE items.item_id = apple 
ORDER BY items.item_id desc 
+0

により合計(ケース)とグループを使用することができますか? – Strawberry

答えて

0

あなたが実際にしたいですかどう

select item_nickname, sum(case when vote_type = 'up' then 1 else -1 end) Votes 
from items 
inner join votes on items.item_id = votes.item_id and items.item_type ='apple' 
group by item_nickname 
order by votes 
+0

これは近いですが、これはすべての項目を示しています。私はitem_type = applesを表示する必要があります(これはvarに貼り付けられます) –

+0

答えが更新されました。 – scaisEdge

+0

これを実行するとリンゴのすべての投票がまとめられ、1つのitem_nicknameのみが表示されます。 各ニックネームを別々にしておく必要がありますが、各ニックネームの投票を別々に追加しますが、投票でソートしてください。 –

関連する問題