mysql count使用IN语句计算所有记录而不是过滤计数

时间:2013-04-25 01:19:11

标签: php mysql

我只是摆弄一些sql并尝试获得所需的结果,但我只是没有得到我想要的东西。我有一个product表和product_filters表,它们有一个关系,product_filters表与filter_values表有关。在我的sql示例中,它打印出结果,但我似乎无法计算顶级产品的数量,它打印出3而不是2

这是result set的示例 这是count

的示例

所以我想要的是获得2个产品的准确数量

SELECT COUNT(*)
FROM 
    (SELECT x.product_id,x.department_id,x.title, pi.image_medium
        FROM products x      
        INNER JOIN product_images pi on pi.product_id = x.product_id
     WHERE x.department_id = 3
    )p
INNER JOIN product_filters pf on pf.product_id = p.product_id
LEFT JOIN filters f on f.filter_id = pf.filter_id
RIGHT JOIN filter_values fv on fv.filter_value_id = pf.filter_value_id
WHERE p.department_id = 3  AND pf.filter_value_id IN(1,3)

1 个答案:

答案 0 :(得分:1)

SELECT COUNT(*)更改为SELECT COUNT(DISTINCT p.product_id)

如果您想查看正在计算的结果集,请将COUNT(*)替换为*。这导致三星平板电脑2有两行,因为它有两个product_filters行符合WHERE子句。