2013-11-09 2 views
-1

У меня есть таблица с именем ad_categories и его структура как этот enter image description hereКак написать поисковый запрос в поле ниже условия

И у меня есть еще одна таблица с именем pub_categories и его структура, как это enter image description here

id в обеих таблицах разные Мне нужно выбрать id's of ad_categories ГДЕ какой-либо из ad_categories.cid should be in pub_categories.cid OR any of ad_categories.scid should be in ad_categories.scid OR any of the ad_categories.tcid should be in pub_categories.tcid У меня есть список cid до 35, scid до 250 и tcid до 600. Как можно достичь этого, пожалуйста, помогите мне ..

cid - основная категория scid - это подкатегория, а tcid - третья подкатегория. ad_category - это то, где рекламодатели выбирают категории, а pub_catogries - издатель, который выбирает категории. У меня есть категории до 30 подкатрий до 250 и тихих категорий до 600. как рекламодатели, так и издатели могут выбирать несколько категорий Я попытался взломать pub_categories cid, scid и tcid по ', `и используя подобное условие для поиска значения как этот

(ad_cat.cid LIKE '%,1,%' OR ad_cat.cid LIKE '%,1') OR (ad_cat.cid LIKE '%,2,%' OR ad_cat.cid LIKE '%,2') OR (ad_cat.scid LIKE '%,1,%' OR ad_cat.scid LIKE '%,1') OR (ad_cat.scid LIKE '%,2,%' OR ad_cat.scid LIKE '%,2') OR (ad_cat.scid LIKE '%,3,%' OR ad_cat.scid LIKE '%,3') OR (ad_cat.scid LIKE '%,4,%' OR ad_cat.scid LIKE '%,4') OR (ad_cat.scid LIKE '%,5,%' OR ad_cat.scid LIKE '%,5') OR (ad_cat.tcid LIKE '%,1,%' OR ad_cat.tcid LIKE '%,1') OR (ad_cat.tcid LIKE '%,2,%' OR ad_cat.tcid LIKE '%,2') OR (ad_cat.tcid LIKE '%,3,%' OR ad_cat.tcid LIKE '%,3') OR (ad_cat.tcid LIKE '%,4,%' OR ad_cat.tcid LIKE '%,4') OR (ad_cat.tcid LIKE '%,5,%' OR ad_cat.tcid LIKE '%,5') 
+3

С этим будет очень сложно работать. Не храните списки в 'cid',' scid' и 'tcid' - используйте другую таблицу. См. [Этот учебник] (http://www.dreamincode.net/forums/topic/179103-relational-database-design-normalization/) для справки. –

ответ

0

для сопоставления через запятую с запятыми столбцов, у вас есть только один выбор, чтобы иметь RegExp в вашем запросе. Правило, как:

ad_categories.cid REGEXP '(^|,)(11|2|4)(,|$)' 

или

ad_categories.cid REGEXP '(^|,)(REPLACE(pub_categories.cid, ',', '|'))(,|$)' 

Надеется, что это поможет.

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