1

mysqldbテーブルに値を書き込む投票アプリケーションがあります。これは選好/加重投票システムであるため、人々は最初のオプション、2番目のオプション、および3番目のオプションを選択します。これらはすべて、テーブルの個別のフィールドに入力されます。応答に数値を割り当て(最初の応答に3、2番目に2、最初に1)、合計スコアとともに値を表示するクエリを作成する方法を探しています。総投票数でこれを行うことができました

select count(name) as votes,name 
from (select 1st_option as name from votes 
      union all 
      select 2nd_option from votes 
      union all 
      select 3rd_option from votes) as tbl 
group by name 
having count(name) > 0 
order by 1 desc;

しかし、各列の応答に値を割り当てて、それらをまとめる方法を完全には理解していません。どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

3

あなたはこのようなことをすることができます:

select sum(score) as votes,name 
from (select 1st_option as name, 3 as score from votes 
      union all 
      select 2nd_option as name, 2 as score from votes 
      union all 
      select 3rd_option as name, 1 as score from votes) as tbl 
group by name;
于 2013-01-08T14:55:31.713 に答える