如何在以下条件下编写搜索查询

时间:2013-11-09 06:54:09

标签: php mysql where where-in

我有一个名为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是thrid子类别。 ad_category是广告客户选择类别的地方,pub_catogries是发布商选择类别。我的类别最多可达30个子集,最多可达250个,第三类最多可达600个。 广告客户和发布商都可以选择多个类别 我试过爆炸pub_categories cid,scid和tcid by',`并使用like条件搜索这样的值

(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')

1 个答案:

答案 0 :(得分:0)

对于使用逗号分隔列分隔的逗号匹配,您只能选择在查询中使用RegExp。规则就像:

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

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

希望这会有所帮助。