我的数据库看起来像:
Table - Products
products_id
products_price
Table - Products_to_Categories
categories_id
products_id
Table - Products_Descriptions
products_name
Table - Categories_Descriptions
categories_name
还有其他一些列,但这些是我需要的。
我想选择以上所有列,但我也希望每个类别的平均产品价格
我知道它可能会包含AVG()函数,但我尝试了一堆不同的查询(我是一个学习者),如果我能找出有用的东西,我会感到不安。只用一个查询就可以做到这一点吗?我现在无法理解它。
非常感谢任何帮助。 :(
答案 0 :(得分:1)
以下是针对一个类别执行此操作的查询,然后您可以更改每个类别的类别ID。
SELECT AVG(product_price) FROM Products WHERE products_id IN (SELECT products_id FROM Products_to_Categories WHERE categories_id = x)
答案 1 :(得分:1)
使用聚合函数时,您可能需要使用GROUP BY子句。
以下是使用AVG功能的手册中的示例: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_avg
您的查询会有点复杂,因为您需要加入表格,但使用group by的想法是相同的。
如果你很好奇,可以参考GROUP BY的更多信息 http://dev.mysql.com/doc/refman/5.6/en/group-by-modifiers.html
答案 2 :(得分:1)
在category_name和/或category_id上加入表,然后加入一个组。 Jrod上面突出显示的链接是很好的参考:
SELECT AVG(p.product_price), c.category_name
FROM Products p
INNER JOIN Products_to_Categories pc ON p.product_id = pc.product_id
INNER JOIN Categories c on pc.category_id = c.category_id
GROUP BY c.category_name