2014-04-13 49 views
0

enter image description here匹配到单行

有一个分配给产品的过滤器ID列表。 可以将多个过滤器分配给相同的产品。 因此,如果根据通过过滤器的ID我期待的查询,以获取产品ID

例如我有

$filter_id = Array 
(
    [0] => 2 
    [1] => 12 
    ... 
) 

在这种情况下,它应该返回产品编号40,我需要匹配所有的过滤器ID来获得特定产品所以我用AND

我试图 SELECT PRODUCT_ID FROM表名WHERE过滤器_id = 2,过滤器_id = 12

由于

+0

是那么究竟什么是问题的产品? –

回答

0

以下是您如何找到同时具有2,12和filter_id的产品。

select product_id 
from products 
where filter_id in (2,12) 
group by product_id 
having count(distinct filter_id) = 2 

您需要更改

having count(distinct filter_id) = 2 

到要检查过滤器_id的数量。

只是使用filter_id in (2,12)到您的查询将返回所有具有2或12

DEMO

1

您的查询

SELECT product_id FROM tablename WHERE filter_id = 2 AND filter_id = 12 

将返回0行,因为不能有filterid等于2和12的Sametime一排,它是在关系数据库设计不可能

相反请使用IN operator为列指定多个必需的值。

SELECT product_id FROM tablename WHERE filter_id IN(2,12)