
いつもお世話になっております。
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
No.1ベストアンサー
- 回答日時:
単純に考えれば、ビットを使ったSQLを考えるより
正規化してビットのたつ項目にだけフラグを立てるテーブルを
用意しておきinner joinしてやるのがもっともSQLらしいまっとうな
やり方だと思いますがどうでしょう?
yambejp さん、遅くなりましたがご回答ありがとうございます。
やはりその方がいいかと思い、ご提案いただいた方法にいたしました。
ありがとうございます。
No.2
- 回答日時:
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 …
spieder さん、ご回答ありがとうございます。
今回は別の方法でやることにしました。
今後の参考にさせていただきます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysqlがインストールされている...
-
#1062 - '0' は索引 'PRIMARY' ...
-
データベースの接続に失敗して...
-
[XAMPP Control Panel v3.2.4] ...
-
下記の問合せを行うクエリを、P...
-
テーブル名が可変の場合のクエ...
-
テーブル作成時のカラムについて
-
同一日に複数レコードがある場...
-
MAMP 99ドル約1.6万円 高い...
-
あってますか?SQL
-
WHERE `年月日` = '晴' OR `年...
-
SQLです教えてくださいお願いし...
-
SQLを作ったのですがうまくいき...
-
(初心者)MySQLやmaraDBで、crea...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてください。
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
webアプリケーションリリース後...
-
csvファイルを自動で取り込み(...
-
MySQLのビット演算
-
XAMPPでのMySQL各種設定保存場...
-
PHP+MySQLでのINSERTの処理遅延
-
データベースファイル(.db)を開...
-
PL/SQLで@ファイル名が反応しま...
-
PL/SQLをWindowsのBATファイル...
-
sql*loader 数値のロード
-
あるDBから別のDBのテーブルをs...
-
mysqlにおけるホストのパーセン...
-
同じSQL文で極端に検索が遅くな...
-
utf8bomとutf8mb4の違いがいま...
-
メンテナンスプランについて
-
create databaseがうまくいきま...
-
MySQL4.1系でPHPが文字化けして...
-
SQLServerのselect文でデータ数...
-
【初心者です】SQLPLUSでのバッ...
-
複数行をINSERTで『ORA-00911: ...
-
数字で「そ」と「り」
おすすめ情報