【发布时间】:2011-11-07 17:24:39
【问题描述】:
好的,所以我有一个名为exp_category_posts 的表,它负责将entry_id 与其关联的cat_ids 之间的关系存储为表中的行(entry_id 的一列, cat_id 的一列)
对于我正在编写的搜索插件,用户可以按类别搜索,我想返回所有匹配的条目。
如果我尝试SELECT entry_id FROM exp_category_posts WHERE cat_id = 1 AND cat_id = 2,我希望得到一组分配给两只猫的条目,但我每次都得到一个空的结果集。使用OR 并没有给出我想要的结果集。
我发现获得我想要的结果的唯一方法是将其分解为多个步骤:
第 1 步:查询每个 cat_id。
第 2 步:将结果集保存为数组。
第 3 步:使用几个 in_array() 调用来过滤掉不在所有结果集中的条目。
虽然这种方法有效,但效率很低。有什么方法可以让我通过单个查询而不是这样来获得我想要的结果?
【问题讨论】:
-
假设
WHERE cat_id = 1返回 1,2,3,4,5,WHERE cat_id = 2返回 3,4,5,6,7。我想要得到的结果是 3,4,5。使用 OR 而不是 AND 会返回 1,2,3,4,5,6,7,这不是我想要的。