结合多个订单'从mysql表和显示总价?

时间:2017-03-09 17:58:12

标签: php mysql sql

我正在使用面板来显示来自我们电子商务网站的所有订单,并且我设置订单的方式是每个订单都有一行引用客户ID。

我正在努力展示我们后端的所有未结订单,但是如果订单ID是18,那么行显示多行(如果订单号为18,订单有2个商品,则订购2行)所有订单号都是18)。

我将在下方添加一些屏幕截图,以便您了解发生了什么。

enter image description here

enter image description here

这是我的sql语句,用于显示所有未结订单:

function GetAllOpenOrders (){
    global $conn;

    $sql = "SELECT * FROM customer_orders LEFT JOIN ordered_products ON ordered_products.custOrderID=customer_orders.custOrderID WHERE customer_orders.orderOpen=1";
    return $result = $conn->query($sql);
}

再次,我希望combine多个产品的订单,并在未结订单屏幕中显示总价。

2 个答案:

答案 0 :(得分:1)

您需要汇总查询才能显示总计。类似的东西:

SELECT sum(prod.totalPrice) as TotalPrice 
FROM customer_orders 
    LEFT JOIN ordered_products ON ordered_products.custOrderID=customer_orders.custOrderID 
WHERE customer_orders.orderOpen=1 
group by customer_orders.custOrderID

我没有您的数据库来测试该查询,但这应该指向正确的方向。

答案 1 :(得分:0)

您需要一个子查询,您可以在其中汇总订单总数,然后进行汇总。您也无法在查询中添加“产品ID”,否则根据定义将其分解为每个订购产品的行。

例如

select
customer_order_id,
sum(product_total_price) as order_total

from
(select
customer_order_id,
product_id,
product_total_price

from table
group by 1,2,3)

group by 1

如果您希望显示1行中订购的产品的名称,我建议使用CONCAT函数作为产品名称(所以它都在一个字段中),然后您将获得总共1行