0

我的数据库看起来像:

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() 函数,但我尝试了一堆不同的查询(我有点学习),如果我能找出可行的方法,我会很烦恼。甚至可以只用一个查询来做到这一点吗?我现在无法理解它。

任何帮助将不胜感激。:(

4

3 回答 3

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

于 2012-04-30T17:09:13.187 回答
1

这是一个针对一个类别的查询,然后您可以更改每个类别的类别 ID。

SELECT AVG(product_price) FROM Products WHERE products_id IN (SELECT products_id FROM Products_to_Categories WHERE categories_id = x)
于 2012-04-30T17:04:56.330 回答
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
于 2012-04-30T17:30:05.990 回答