チェックボックスから得る値を格納する一番よいやり方

このQ&Aのポイント
  • フォームから受け取ったチェックボックスの値を効率的にデータベースに格納する方法はないかと考えています。また、データベースからユーザーがチェックした値の中で最も多いものを取り出す方法も教えてください。
  • フォームに10個のチェックボックスがあり、ユーザーは好きな3つまで選択できます。選択された値をデータベースに格納し、最も多く選択された3つの値を取り出したいです。
  • SET型を使用してフォームからの値をデータベースに格納しましたが、最も多く選択された値をカウントする方法を一つのSQLクエリで行う方法がわかりません。効率的な方法はありますか?
回答を見る
  • ベストアンサー

チェックボックスから得る値を格納する一番よいやり方

次の場合どのようにするとよいか教えてください。 ■フォーム 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種類分)フィールドを作ったほうが賢いでしょうか?

  • MySQL
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.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 で集計すればよいでしょう

関連するQ&A

  • チェックボックスの値

    チェックボックスの値を取得する方法を調べています。 サイトの例では、チェックボックスが全てTformという同一のフォーム内にあります。これが仮に異なるフォームにある場合、どのように処理したらいいのでしょうか? http://musashisakai.chiikihp.net/master/java/checkbox1.php#2 Tform1 Tform2 Tform3 Tform4 にそれぞれチェックボックスがある場合です。 もし分かる方がいましたら教えてください。 よろしくお願いします。

  • チェックボックスの値のチェック

    プログラム初心者です 質問1 HTMLのフォームのチェックボックスから配列でphpに値を渡したときにチェックした値が1個しかなかった時には配列として受け取っているのでしょうか?それとも一個しかない場合は変数として受けとっているのでしょうか? 現状ではissetで調べて値がある場合にはその配列をforeachで取り出して実行しています(実際にやってみたら値1個でも動いていますが気になったので教えてください) 値のチェックはissetのみでいいでしょうか? 質問2 MySQLの方は、チェックの個数分のレコードを削除するために繰り返し処理の中でsqlを最大20回発行するのはダメな処理ですか?(チェック1個の場合は1回のみsqlを発行しています) 一般的に使われているならこれでいこうと思います よろしくお願いします

    • ベストアンサー
    • PHP
  • エクセルユーザーフォームのチェックボックスのCaptionにセルの値を入れたい。

    表題の通りで、エクセルユーザーフォームにチェックボックスを作成し、そのCaptionにセルの値を入れたい場合、どのようにすればいいのでしょうか。 つまり、シートのセルの値が変われば、ユーザーフォームのチェックボックスの文字が変わっているようにしたいのです。 エクセル2003です。 よろしくお願い致します。

  • チェックボックスの値を新規でレコードへ格納したい(Access2003 ADO)

    宜しくお願いします。 Access2003(WinXP)です。ADOで書いています。 テーブルへ新しいレコードを作成していれる時と 既にあるレコードへの編集なのですが、 新規の時は AddNew を書くだけで 他は同じコードを利用しています。 テキストボックスやコンボボックスの値は入るのですが チェックボックスのTrue、Falseのところで 新規の時だけエラーになります。 編集の時は大丈夫です。 rs.Fields("フィールド名").Value = Form.チェックボックス名.Value と入れているのですが、いけないのでしょうか。 ちなみにDAOで書いていたのを途中でADOに変えています。 rs.Fields!フィールド名= としてもだめでした。 分かる方、お願いします。

  • チェックボックスとテキストの値

    初心者で勉強中です。できるだけわかりやすくしていただけると助かります。 前提として、 (1)フォーム名:Aform フォーム名:Bformと2つのフォームがあります。 (2)Aformには、Atextというテキストボックスがあります。 (3)Bformには、複数のチェックボックスがあります。  テキストボックスの名前は、CB1、CB2・・・と連番になっています。  aspでデータを書き込みながらチェックボックスを作成しているため、チェックボックスの数はその都度変わります。 ここからが質問なのですが…行いたい事は、 (1)チェックボックスは、1つ以外チェックできないようにし、2つ目のチェックでアラートを出し、チェックをできないようにする。 (2)チェックボックスのvalueをAformのAtextにセット (3)チェックボックスを外した時には、AformのAtextはクリア。 ※aformのAtextは、input type=hidden でもいいと考えています。 現在、調べ調べて、チェックボックスのOnClickで2つ以上でアラートは出て、Atextにも値はセットされるのですが、チェックボックスをクリアした時に、Atext値が残ってしまっています。 どなたか、教えていただけないでしょうか?

  • 格納する値とは

    コンピュータの用語的に、もしくは数学的に考えるに『格納する値』と表示される問題文に対し、『リストボックスで行を選択すると、その行の値をデータベースに保存したり、値を後で保存することが出来る。一意に行を特定できるフィールドを選択してください。データベースに保存または使用する値は、リストボックスでどの列に含まれていますか。』のところだという。その意味するところはなんですか?

  • ExcelVBA チェックボックスの値

    エクセル マクロ ユーザーフォーム 2つの間で、チェックボックスの状態をループを使って 取得するがわかりません? ユーザーフォーム1にチェックボックスを50個用意し、 ユーザーフォーム2にて各50個の値がtrue or falseを取得したいと考えています。 又、50個を取得する時にループを用いて、記載を短くする方法についても教えてください。 現在は、ユーザーフォーム1に下記のように指定して処理をしていますが、 varCheck1をユーザーフォーム2で、For Nextを用いて一度に処理する方法が分かりません。 Private Sub CommandButton1_Click() Dim varCheck(1 To 50) As Variant varCheck1 = ユーザーフォーム1.CHECKBOX1.Value varCheck2 = ユーザーフォーム1.CHECKBOX2.Value varCheck3 = ユーザーフォーム1.CHECKBOX3.Value ・             ・ varCheck50 = ユーザーフォーム1.CHECKBOX50.Value ・ Unload ユーザーフォーム1 End Sub 標準モジュールに PUBLICvarCheck1から50まで記載して ユーザーフォーム間を使用できるようにしています。

  • チェックボックスの管理方法について

    著名人のデータベースを新たに作成いたしました。ご存命者はチェックボックスで管理しますが、著名者がご高齢の場合、いずれチェックボックスを外す必要があります。しかし、閲覧中に誤ってチェックボックスを外す可能性があり、有効な管理方法がないかと考えています。アドバイスをお願いできませんでしょうか。 「データの保全と編集の容易性を両立させたい(考えたこと)」 1,閲覧中に誤ってチェックボックスに触れてもチェックを外せない様にしたい。「編集ロックの設定」 2,チェックボックスのチェックを外す時に設定「編集ロック解除し編集ロックを再設定」を変えたりしない。 「例えば・・・」 チェックボックスを編集ロックにしておいて、チェックボックスの傍らにコマンドボタンを作成し、編集ロックのON・OFF可能にする方法は可能でしょうか。もし、可能であればどの様に設定すればよいのでしょうか。 「オブジェクト例(フォームは他に単票及び一覧が数種類あり)」 ・フォーム名:著名人リストフォーム ・リストフォーム上のチェックボックス名:存命 以上ですが、宜しくお願いいたします。

  • チェックボックス access2003

    既存のデータベースからaccessを使って検索を行っています 表示させるテーブルの中でひとつだけ 0と1どちらかが入力されているフィールドがあります それをフォームで表示する際にチェックボックスで表示させたいのですが どのようにすればよいのでしょうか? ご存知の方よろしくお願いいたします

  • グループ化してあるチェックボックスについて

    グループ化してあるチェックボックスについて Access2007で売上を管理しています。 初めは作り方がわからず、とにかく必要と思われるフィールドを作成して伝票を入力するフォームには領収済み(チェックボックスでY/Nを入力)というフィールドを埋め込みました。 入力と領収は普通タイムラグがあるので、フォームに入力した個々のレコードの[領収済み]フィールドにいちいちチェックを入れるということは普通しませんね。 検索→一括更新でチェックを入れたり、外したりするものです。 集計を行うのにあるクエリを作成し、チェックボックスのある[領収済み]フィールドをグループ化して表示させた場合、チェックボックスをクリックしたら一括でチェックを入れたことになる・・・ みたいなことは出来るのでしょうか? そのクエリを基にしたフォームを作成して、[領収済み]フィールド(チェックボックス)のプロパティのどこかをこうすれば・・みたいなことがありそうな気がしますが、わかりません。 これが効率的かどうかということは無視して考えていただけるとありがたいです。