2013-04-04 6 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, я получаю Bridgestone а и Bridgestone B, так как Bridgestone B имеет idCat 12, и она будет соответствовать, если я с помощью LIKE ' 1% '

Мой вопрос в том, как обращаться к perf ОРМ поиск только что матч с "" отделенный ..

извините за мой плохой английский использование

+0

Почему вы не проводите прямой поиск внутри таблицы 'Category'? –

+0

, потому что я хочу получить детали товара, а не название категории ... – user2070749

ответ

0

использование FIND_IN_SET

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

thankyou .. ты помогаешь моей жизни ... :) – user2070749

2

FIND_IN_SET()

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

Вы должны также нормализуйте таблицу. Это очень дурная привычка хранить значения, разделенные запятой в одном поле.

Вот предлагаемый новая схема конструкторе

Item

  • ItemID (PK)
  • ITEMNAME

Категория

  • CategoryID (PK)
  • CategoryName

Item_category

  • ItemID (ФК)
  • CategoryID (ФК)
+0

+1 и спасибо за информацию, что есть скрипт sql :) – scones

+0

это то же самое с вашим новым вопросом ':)' –

Смежные вопросы