使用mysql解决逻辑问题

时间:2013-03-11 22:34:31

标签: php mysql

我有一个手表在线商店。它有一个搜索过滤器。过滤的一个标准是手表的材料。它有很多独特的价值。例如:“钢”,“带金的钢”,“带镀金的钢”。

我试图通过创建一个sql LIKE请求来过滤手表,以过滤带有钢体,金体的手表。但是当寻找带有金色机身的手表时,它也给了我带镀金的钢表,因为它包含“黄金”这个词。

你能提出一个很好的解决方案来解决这个问题吗?

到目前为止,我尝试了这个sql语句:

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

2 个答案:

答案 0 :(得分:2)

如果我这样做,我会创建一个名为“Material”的表,并为每个可用材料添加一条记录,然后将材质ID存储在watches表中而不是单词中。 (这有很多原因。)

材料表:

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

然后在您的搜索中,您将允许用户选择他们感兴趣的材料,您的SQL看起来像这样:

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

这将推出一款由黄金或钢金制成的手表。而且您的搜索速度会更快。

答案 1 :(得分:0)

$criterium = "gold";
$query = mysql_query("SELECT * FROM watches WHERE material = '$criterium'");

它应该可以解决你的问题。还要检查SQL LIKE条件以进一步查询