秘密基地、どこに作った?

次の場合どのようにするとよいか教えてください。

■フォーム
name="hoge[]"のチェックボックスが10個あります。
値は1~10とします。
ユーザーはそのうち好きな3つまでチェックできます。
例えば1,5,6など。
そのチェックされた値をデータベースに格納しておきます。

■やりたいこと
データベースからユーザーがチェックした値の中で多いものBEST3を取り出す。
例えば1:5人、2:3人、3:10人、4~10:0人なら、3,1,2が取り出されるような感じです。

■試したこと
フォームから渡された値をSET型の一つのフィールドに入れてみました。
しかし、BEST3を数える場合に、1が何人、2が何人と数えることを一度にできるSQLが思いつきませんでした。

SELECT COUNT(*) FROM テーブル名 WHERE FIND_IN_SET('数字',フィールド名)>0
(数字はこの場合1~10が入る)
とやれば1つずつはカウントできますが面倒です。

これをスマートに解決する方法はありますか?

チェックボックスの種類分(この場合10種類分)フィールドを作ったほうが賢いでしょうか?

A 回答 (1件)

>これをスマートに解決する方法はありますか?



単純なはなし、こういう形式でデータを保持

user check
A 1
A 3
A 5
B 1
B 2
C 1
C 3

これを
SELECT user,count(*) as count FROM ほげ
GROUP BY user
で集計すればよいでしょう
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報