简体   繁体   中英

Combine multiple 'orders' from mysql table and display total price?

I'm working on a panel to show all orders from our e-commerce site and the way I have the orders set up is to have a row for each order referring to the customer id.

I'm working on showing all open orders on our back-end however the rows are showing multiple rows for the same order if (so if the orderID is 18, and the order has 2 items ordered there a 2 rows all the with the orderID of 18).

I'll include some screenshots below so you have an idea of what's happening.

在此处输入图片说明

在此处输入图片说明

This is my sql statement to show all open orders:

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);
}

So again, I want to combine the orders with multiple products and display the total price in the open orders screen.

You need an aggregate query to display the total. Something like:

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

I don't have your database to test that query but that should point you in the right direction.

You need a sub-query where you SUM the order totals and then aggregate. You also can't add the "product ID" to your query otherwise it will by definition break it down into rows for each product ordered.

For example

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

If you're looking to show the names of the products ordered in your 1 row, I suggest using a CONCAT function for the product names (so it's all in one field) and then you'll have the total in 1 row.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM