MySQL:按两列分组并求和

5
构建库存系统。我有很多产品,每个产品有三个不同的变量。因此,对于库存总数,我想按两列(产品和尺寸)分组并求和数量以获取库存总数。
要求输出的格式如下:
产品 尺寸 数量
Widget one 2 375
Widget two 3 150
Widget two 2 150
以下是我找到的可以按一列分组并求和的代码:
$query = "SELECT product, SUM(Quantity) FROM inventory GROUP BY product";  
$result = mysql_query($query) or die(mysql_error());
// Print out result
while($row = mysql_fetch_array($result)){
    echo "Total ". $row['product']. " = ". $row['SUM(Quantity)'];
    echo "<br />";
}
?>

我只是被分组两个列卡住了。这可行吗?还是我应该为三种尺寸中的每一种创建三种不同的产品,并消除那一列?谢谢。

1个回答

11

根据您的示例表,似乎您想要按product进行分组,而不是id。 您只需要将Size列添加到SELECT列表和GROUP BY中即可。

$query = "SELECT 
            product,
            Size, 
            SUM(Quantity) AS TotalQuantity 
          FROM inventory
          GROUP BY product, Size";

请注意,我添加了一个列别名TotalQuantity,这将使您更容易通过更明智的方式$row['TotalQuantity']而不是$row['SUM(Quantity)']从获取的行中检索该列。


嘿,感谢你的帮助!是的,我为这个问题更改了表格,因为在现实生活中它有点令人困惑。我修复了查询以匹配示例表格。我现在要尝试这段代码! - cantaffordavan
谢谢你帮我解决这个问题。我只学习了一个月的PHP和MySQL,但是我正在学到很多东西。这确实有道理,我现在已经将一些新知识添加到我的编码工具箱中。非常感谢!计时器结束后我会立即接受。 - cantaffordavan
如果需要进行多个求和操作,我该如何编写 AS 函数呢? 例如:SUM(Q1),SUM(Q2),SUM(Q3) 等等... - Aasim Azam
1
@AasimAzam SUM(q1) AS q1, SUM(q2) AS q2, SUM(q3) AS q3, SUM(q4) AS q4)... 的翻译如下: - Michael Berkowski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接