- ベストアンサー
効率の良い検索
WEBサイト上でPHPで用い検索できるようにしたいです。 DBのカラムに素材1から素材16まで登録できるようになっています。 素材1から16までは空欄の可能性があります。 検索のテキストボックスには、半角スペースで区切って複数の検索キーワードを入力できるようにしようとしています。 postで受け取った値を区切るところまでできましたが・・・。 この場合、どのように検索のSQLを書いたらいいでしょうか? MySQLを用いています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
検索キーワードが「いぬ」なら SELECT * FROM テーブル名 WHERE 素材1 LIKE '%いぬ%' ~ SELECT * FROM テーブル名 WHERE 素材16 LIKE '%いぬ%' という感じのSQL文を発行するんですよね? 例えば $str = array("いぬ","ねこ","さる"); //検索キーワードの配列 for($i=1; $i<=16; $i++){ foreach($str as $value){ $sql = "SELECT * FROM テーブル名 WHERE 素材$i LIKE '%$value%'"; } } こんな感じで考えると、16×3通りのSQL文がシンプルな処理で出来ます (そちらの環境に合わせて書き直して下さい) ※カラムが空欄の場合については考慮してないので 処理速度が~みたいな話になるともう少し追加の処理が必要
その他の回答 (1)
- koke29
- ベストアンサー率58% (114/196)
そうですねー 設計から見直して、極端に1つにしなくても5個くらいに収めて…とかでも いいんじゃないかと思いますよ どういうつくりにしたいのかわからないのでアドバイス出来ないですが データベース 正規化 などで色々調べてみるといいと思います 頑張って下さいねー
補足
有難うございました。 素人でよく分かっていなかったんですが、この方法だとデータ数が増えるとかなり処理が重くなるので素材のカラムを1個にしようと思います。