Mysql ( Doctrine ) - 计算计数 > X 的内连接

标签 mysql sql join doctrine

我有 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/

相关文章:

sql - 为什么索引查找会在统计数据中显示高扫描计数?

mysql - 加入2个基于文本字段的mysql选择

sql - Django ORM : Getting rows based on max value of a column

mysql - 在 SQL 中查找 n 个连续数字的组是否重复

mysql - MySQL 中的 Left Join 返回空值,但它们不应该返回空值

mysql - 从多个表获取数据并对结果进行算术运算

mysql - If 语句总是转到 Else 方法?

mysql - 如何停止对忽略的插入进行自动递增,这些插入不会对 MySQL 进行任何更改?

php - 从 XML 流生成 CSV 文件以进行 MYSQL 导入

mysql - 使用多个较小的 varchars 与一个大的