2014-04-13 50 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)