我只是摆弄一些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)
答案 0 :(得分:1)
将SELECT COUNT(*)
更改为SELECT COUNT(DISTINCT p.product_id)
如果您想查看正在计算的结果集,请将COUNT(*)
替换为*
。这导致三星平板电脑2有两行,因为它有两个product_filters
行符合WHERE
子句。