搜索多个类别

时间:2013-04-04 07:10:44

标签: php mysql categories

假设我有一张这样的表

ITEM
------
id | Name           | idCat
-------------------------
1    Bridgestone A   1,5,11
2.   Velg            2,3
3.   Bridgestone B   12,4

Category
-----------
idCat  | Name      
--------------
1        Ban
2.       Velg
3.       Velg Silver
4.       Ban Luar
5.       Ban dalam
11.      Ban Special

然后例如我想搜索Velg .. 我只得到Velg,因为idCat有'2'而我使用LIKE'2%'

但问题是..当我搜索BAn时,idCat是1,我得到了 普利司通A和普利司通B,因为普利司通B有idCat 12,如果我使用LIKE'1%'将匹配它

我的问题是,如何查询以执行仅与“,”分开匹配的搜索。

抱歉我的英文不好

2 个答案:

答案 0 :(得分:2)

使用FIND_IN_SET()

SELECT  *
FROM    tableName
WHERE   FIND_IN_SET('1', idCat) > 0

你也应该规范化你的桌子。将逗号分隔的值存储在单个字段中是非常糟糕的习惯。

这是一个建议的新架构设计

<强>物品

  • ItemID(PK)
  • ITEMNAME

<强>分类

  • CategoryID(PK)
  • 类别名称

<强> Item_category

  • ItemID(FK)
  • CategoryID(FK)

答案 1 :(得分:0)

使用FIND_IN_SET

select * from ITEM where FIND_IN_SET('2', idCat) > 0