MySQL Select AVG 使用多个 WHERE 子句

MySQL Select AVG using several WHERE clauses

我有一个在线商店的搜索引擎,我想让用户有机会按评级过滤产品,直到现在我的查询如下所示:

SELECT products.*,prices.price,AVG(ratings_products.rating)
FROM products,prices,ratings_products
WHERE products.title REGEXP 'lg' AND products.active = 'yes'
AND prices.price >= '10' AND prices.price <= '298650'
AND products.cod_product = prices.id_product
AND ratings_products.ratings >= '40' AND ratings_products.ratings <= 59
AND ratings_products.id_product = products.cod_product
AND products.id_category = '59' LIMIT 0,1

我们的想法是按价格、特定过滤器和评级进行过滤,除评级外的所有作品。我有 table ratings_products 具有以下结构:

id | id_product | id_user | title | comment | date | rating
1  |      18    |    65   |awesome| some    |12344 | 85
2  |      18    |    84   |cool   | great   |12345 | 20

现在我需要将 AVG 计算到 return 85 到 20 之间的平均值,但是查询是 returning NULL,如果我删除 ratings_products.rating <= 59 它会给我结果但是不是计算平均值。

感谢任何帮助

谢谢

AND ratings_products.ratings >= '40' AND ratings_products.ratings <= 59

这意味着您需要 40 到 59 之间的值。您在示例中显示 20 和 85,两者都不在您查询的范围内,因此结果为 NULL

删除 AND ratings_products.ratings <= 59 部分会留下一个查询评分高于 40,即 85,就其本身而言,无需平均。

我是不是遗漏了什么或者您查询的值有误?