2013-04-04 59 views
0

可以說,我有這樣的搜索多個類別

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%'

我的問題是,如何查詢perf ORM的搜索,只有匹配 「」 隔開..

對不起我的英文不好

+0

爲什麼你不在'Category'表中直接搜索? – 2013-04-04 07:13:19

+0

,因爲我想要得到的項目的詳細信息,而不是類別名稱... – user2070749 2013-04-04 07:14:08

回答

0

使用FIND_IN_SET

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

謝謝你..你幫助我的生活...... :) – user2070749 2013-04-04 07:16:19

2

使用FIND_IN_SET()

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

你應該也是正常化您的表。在單個字段中存儲由逗號分隔的值是非常不好的習慣。

這裏有一個建議的全新的架構設計

項目

  • 項目ID(PK)
  • ITEMNAME

類別

  • 類別ID(PK)
  • 類別名稱

Item_category

  • 的ItemID(FK)
  • 類別ID(FK)
+0

+1和謝謝你的信息,有一個SQL小提琴:) – scones 2013-04-04 07:17:04

+0

這是你的新問題':)' – 2013-04-05 07:02:06