Customer and Grand Total with Mysql


Customer and Grand Total with Mysql

在让MySQL与我一起处理这个项目时遇到了一些困难。我有一个订单表,其中包含名称、订单时间、数量、咖啡类型和价格。我需要打印一次客户名称、该客户的所有订单、每个客户的小计和总计。我试着用两个嵌套的while循环来实现它,但这导致了一个无限循环。我想要的格式是:

Customer Name:
Ordered 10/12/13 1 Espresso 2.00
Ordered 10/11/13 1 Espresso 2.00
Customer Subtotal: 4.00
Grand Total 4.00

$all = mysqli_query($mysqli, "SELECT * FROM orders ORDERBY name");
$result = mysqli_query($mysqli, 
"SELECT *, SUM(Price) as Total FROM orders GROUP BY Name WITH ROLLUP");
while($row = mysqli_fetch_array($result)) {
        echo "Orders for: " . $row["Name"] . "<br>";
        $data = mysqli_fetch_array($all);
        while($data["Name"] === $row["Name"]) {
            echo "On " . $row["OrderTime"] . " ordered " . $row["Quantity"] . " " . $row["CoffeeType"] . " Total: " . asDollars($row["Price"]) . "<br>";
        }
        echo "Customer Total: " . $row["Total"];
        if($row["Name"] === NULL) echo "Grand Total: " . $row["Total"];
}

我知道嵌套while循环可能不是最好的解决方案。我知道如何在LINQ中使用lambda语句来实现这一点,但我不确定MySQL是否具有这些功能。有什么方法可以修复这个代码,从而实现上面的格式吗?非常感谢您抽出时间。

您可以使用类似的group_concat()在一个查询中完成

select customer_name,
group_concat(orders) as all_order,
sum(price) as total_price
from Order
group by customer_name