複数フィールドに複数keyで検索を行う場合、どのような方法が効率がいいでしょうか?
以下テーブルのA_nameでもA_tagでも検索したいのです。
http://okwave.jp/qa/q2634613.html
も見ましたが、『(キー、情報区分、情報)という構成』の意味がわかりません。
複数フィールドで検索しないといけないテーブル設計が悪いということでしょうか?
複数フィールドがいけないのであれば、検索専用のフィールドA_searchを設け『1 白州 サントリー、長野』を作ろうかと思いましたがカッコよくない気がします。
下記コードにアドバイスいただけないでしょうか?
よろしくお願いします。
検索キー
$key1 = "サントリー";
$key2 = "長野";
table_A(pkey A_id)
A_id, A_name, A_Tag
1, 白州, サントリー、長野
2, 山崎, サントリー、大阪
3, 余市, ニッカ、北海道
4, 宮城峡, ニッカ、仙台
select * from table_A where A_name like '%$key1%' and A_name like '%$key2%' and A_Tag like '%$key1%' and A_Tag like '%$key2%'
ご質問にあるレコードを見ると、A_nameカラムに入っているのは$key1のみで、A_Tagカラムに入っているのは$key2のように見受けられます。
したがってSQL文は次のようになるのではありませんか。
select * from table_A where A_name like '%{$key1}%' and A_Tag like '%{$key2}%';
もしA_nameカラムには$key1も$key2も入っている、A_Tagカラムには$key1も$key2も入っているという状況でしたら、それはテーブルの設計が悪いです。
データベース構築では、概念設計、論理設計、物理設計の3段階の手順を踏んで設計を行いますが、論理設計の段階できちんと正規化ができていないといけません。まず、A_nameとA_Tagの役割を明確に分解する第1正規形ができていないといけません。
http://gihyo.jp/dev/feature/01/database/0001