• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP MySQL 配列データの比較)

PHP MySQL 配列データの比較

このQ&Aのポイント
  • 企業の待遇情報を管理するWebSiteで、複数のチェックボックスにチェックを入れて待遇情報を検索する際に、重なる項目がある企業を一覧表示する方法についての質問です。
  • 企業の待遇情報を管理するWebSiteで、複数のチェックボックスにチェックを入れて待遇情報を検索する際に、重なる項目がある企業だけを一覧表示する方法についてアドバイスをいただきたいです。
  • PHPとMySQLを使用して企業の待遇情報を管理するWebSiteを作成しています。複数のチェックボックスにチェックを入れて待遇情報を検索する際に、重なる項目がある企業だけを一覧表示させる方法について教えてください。

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

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

2進数演算のビット積を使うといいかも。 MySQL テーブルのデータが 01 羅列の文字列なら、conv関数で2進数にし、入力値の方も同様に 2進数として、ビット積 & をとる。 これだけだと、どれかの項目が1であれば引っかけてしまうので、さらに元のビット位置と全部同じか比較する。 よって、treatment の 1 のところが全部1であるものは、以下が成り立つ where (CONV(`treatment`,2,2) & CONV('01・・入力値',2,2)) = CONV(`treatment`,2,2) ただし、treatmentの桁数に変更がない、全て同じ桁数で入っているという前提なので、 今後、treatmentの項目数に変動があると、うまく抽出できなくなるので、項目ごとのカラムにしてしまうのも一つの方法かと思います。

saorixs
質問者

お礼

有難う御座います。大変参考になりました! 知らない関数ばかりでもう少し勉強してみます!

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

拡張性やメンテナンス性を考えれば、変に連結して処理せずに 正規化して処理した方がよいですよ 結果としてスピードも速くなると思います。

saorixs
質問者

お礼

有難う御座います!参考になりました!

関連するQ&A