匹配单行

时间:2014-04-13 06:35:24

标签: php mysql sql opencart

enter image description here

有一个分配给产品的过滤器ID列表。 可以将多个过滤器分配给同一产品。 因此,如果根据传递的过滤器ID

,我正在寻找获取产品ID的查询

例如我有

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

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

我试过了 SELECT product_id FROM tablename WHERE filter_id = 2 AND filter_id = 12

谢谢

2 个答案:

答案 0 :(得分:1)

您的查询

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

将返回 0行,因为不能同时将filterid等于2和12的行,在关系数据库设计中不可能

而是使用IN operator为列指定多个必需值。

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

答案 1 :(得分: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

到你正在检查的filter_id的数量。

只需在查询中使用filter_id in (2,12)即可返回所有包含2或12的产品。

<强> DEMO