公式アカウントからの投稿が始まります

いつもお世話になっております。
PHPとMySQLでアプリケーションの作成をしています。

MySQLでのビット計算で検索結果を表示しようとしています。

■PHPファイルにはチェックボックスで、約70個の項目が表示されています。

■データベースには「0」と「1」で以下のように登録されています。
 00011・・・・・1110

■チェックされた場合は「1」、チェックされていない場合は「0」
 PHPファイルからsubmitされたときに、↑の条件でデータを生成します。

■一致したものが1つでもあれば検索結果に表示します。
 00011・・・・・1110(データベースのデータ)
&00010・・・・・0000(submitされたデータ)
------------------------
 00010・・・・・0000

上記のようにしたい場合、SQL文はどのように記述したらよろしいでしょうか。
ご教示よろしくお願いいたします。

<環境>
MySQL:4.1.20
PHP:4.3.9

A 回答 (2件)

単純に考えれば、ビットを使ったSQLを考えるより


正規化してビットのたつ項目にだけフラグを立てるテーブルを
用意しておきinner joinしてやるのがもっともSQLらしいまっとうな
やり方だと思いますがどうでしょう?
    • good
    • 0
この回答へのお礼

yambejp さん、遅くなりましたがご回答ありがとうございます。
やはりその方がいいかと思い、ご提案いただいた方法にいたしました。
ありがとうございます。

お礼日時:2009/06/03 12:27

64個までしか指定できないので少し役不足ですが、SET型というのが、ちょうどBITフラグの考え方をした型です。


http://dev.mysql.com/doc/refman/5.1/ja/string-ty …

計算自体は"FIND_IN_SET"を使えば簡単に実装できると思います。
http://dev.mysql.com/doc/refman/5.1/ja/string-fu …

ただ、他のRDBMSでも使えるような汎用的な型ではないので開発するメンバーのスキルレベル等を考えれば、単純に70個カラムを用意してやることをお勧めしますけどね。

参考URL:http://www.itmedia.co.jp/enterprise/0308/24/epn0 …
    • good
    • 0
この回答へのお礼

spieder さん、ご回答ありがとうございます。
今回は別の方法でやることにしました。
今後の参考にさせていただきます。
ありがとうございました。

お礼日時:2009/06/03 12:28

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