我有 SQL 来计算具有特定属性的产品。我在产品过滤器中使用它。 SQL 很长,但主要部分如下:
SELECT COUNT(products.id) as products_count, property_items.description, property_items.id as id
FROM property_items
INNER JOIN product_properties ON property_items.id = product_properties.property_item_id
INNER JOIN products ON product_properties.product_id
INNER JOIN product_properties pp ON products.id = pp.product_id AND (pp.property_item_id IN ($ids))
GROUP BY property_items.id
HAVING COUNT(pp.id) >= $countIds
当我在 $ids
中只有一个元素时,这非常有效,但是当我再选择一个元素时,结果很糟糕。看起来 sql 返回具有 $ids
中任何属性的所有产品的计数,但我只需要计算包含所有属性的产品。
首先获取所有可用的属性。在每个属性上加入包含该属性的产品,然后返回该产品的所有属性来检查产品是否也包含已检查的属性。或者这是个坏主意?我需要将主表(FROM 表)保留为 property_items
。
我需要获得这种格式的结果:
=============================
id|description|products_count
=============================
1 |lorem ipsum|10
-----------------------------
2 |dolore sit |2
感谢您的任何想法。
最佳答案
尝试使用 SELECT COUNT (DISTINCT products.id) 作为 cnt
关于Mysql ( Doctrine ) - 计算计数 > X 的内连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54197392/