0

我只是摆弄一些 sql 并试图获得所需的结果,但我并没有完全得到我想要的。我有一个 products 表和一个 product_filters 表,它们有关系,product_filters 表与 filter_values 表相关。在我的 sql 示例中,它打印出结果,但我似乎不能只计算顶层的产品数量,它打印出 3 而不是 2

这是结果集的示例,这是计数 的示例

所以我想要的是获得 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)
4

1 回答 1

1

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

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

于 2013-04-25T01:37:02.207 回答