2017-03-09 7 views
0

Ich arbeite an einem Panel, um alle Bestellungen von unserer E-Commerce-Site zu zeigen und die Art, wie ich die Bestellungen eingerichtet habe, ist eine Zeile für jede Bestellung, die sich auf die Kunden-ID bezieht.Kombinieren Sie mehrere 'Bestellungen' aus Mysql-Tabelle und Gesamtpreis anzeigen?

Ich arbeite an der Anzeige aller offenen Bestellungen auf unserem Back-End, aber die Zeilen zeigen mehrere Zeilen für die gleiche Reihenfolge, wenn (also wenn die OrderID 18 ist, und die Bestellung hat 2 Artikel dort eine 2 Zeilen alle das mit der orderID von 18).

Ich werde einige Screenshots unten einfügen, damit Sie eine Vorstellung davon haben, was passiert.

enter image description here

enter image description here

Das ist mein sql Anweisung alle offenen Aufträge zeigen:

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

Also noch einmal, ich die Aufträge mit mehreren Produkten combine möchten und zeigen den Gesamtpreis in der offene Bestellbildschirm.

+0

Sie sollten die gesamte Post lesen, bevor Sie aufgefordert werden, meinen Beitrag zu schließen 'Also noch einmal, ich möchte die Bestellungen mit mehreren Produkten kombinieren und den Gesamtpreis im offenen Bestellbildschirm anzeigen –

Antwort

1

Sie benötigen eine Gesamtabfrage, um die Gesamtsumme anzuzeigen. Etwas wie:

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 

Ich habe nicht Ihre Datenbank, um diese Abfrage zu testen, aber das sollte Sie in die richtige Richtung zeigen.

0

Sie benötigen eine Unterabfrage, in der Sie die Summen der Aufträge SUMMEN und dann aggregieren. Sie können auch nicht die "Produkt-ID" zu Ihrer Abfrage hinzufügen, da sie sie sonst per Definition für jedes bestellte Produkt in Zeilen aufteilt.

Zum Beispiel

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 

Wenn Sie schauen, um die Namen der Produkte in Ihrer 1 Reihe bestellt zu zeigen, ich schlage vor, mit einer CONCAT Funktion für die Produktnamen (so ist es alles in einem Feld) und dann haben Sie die Summe in 1 Reihe.

Verwandte Themen