0

私は時計のオンラインショップを持っています。検索フィルターがあります。フィルタリングの基準の1つは、時計本体の素材です。それにはたくさんのユニークな価値があります。例:「鋼」、「金鋼」、「金メッキ鋼」。

スチールボディ、ゴールドボディの時計をフィルタリングするSQL LIKEリクエストを作成して、時計をフィルタリングしようとしました。しかし、金のボディを持つ時計を探すと、「金」という言葉で構成されているため、金メッキが施されたスチール製の時計も表示されます。

この問題を解決するための良い解決策を提案できますか?

これまでのところ、私はこのSQLステートメントを試しました:

SELECT * FROM `watches` WHERE `material` LIKE "%gold%"
4

2 に答える 2

2

これを行う場合は、「Material」というテーブルを作成し、使用可能な各マテリアルのレコードを追加してから、単語ではなく、watchesテーブルにマテリアルIDを保存します。(これが優れている理由はいくつかあります。)

材料表:

id - Material
1 - Gold
2 - Gold Plated
3 - Silver
4 - Steel with Gold

次に、検索で、ユーザーが興味のある資料を選択できるようにします。SQLは次のようになります。

Select * from Watches where Material IN (1,4);

これにより、ゴールドまたはスチールとゴールドで作られた時計が表示されます。そして、あなたの検索はより速くなります。

于 2013-03-11T23:14:17.517 に答える
0
$criterium = "gold";
$query = mysql_query("SELECT * FROM watches WHERE material = '$criterium'");

それはあなたの問題を解決するはずです。さらにクエリがないかSQLLIKE条件も確認してください

于 2013-03-11T22:52:01.477 に答える