MySQL-UPDATE mit SELECT SUM aus verschiedenen Tabelle
Ich habe zwei Tabellen:
ITEMS
mit Mengen und unit_price (id | name | order_id | qt | unit_price)
und Tabelle ORDERS
.
Möchte ich UPDATE
Tabelle orders
und in orders.total_price sum of multiplications qt*unit_price
für die gleichen Aufträge zu bekommen Gesamtpreis der Bestellung.
Den SELECT
Abfrage auf die Tabelle Artikel ist ganz einfach und funktioniert einwandfrei Angabe von Summen für alle Elemente innerhalb der gleichen order_id:
SELECT SUM(items.qt*items.unit_price) from items GROUP by items.order_id
aber ich kann nicht legen Sie diesen Wert in meine ORDERS
Tabelle. Ich konnte nicht diese Arbeit machen:
UPDATE orders, items SET orders.total_price = (SELECT SUM(items.qt*items.unit_price)
FROM items GROUP BY items.order_id) WHERE orders.id = items.order_id
gibt es "Subquery returns more than 1 row"
Fand ich eine sehr ähnliche Frage hier aber die Antwort hat nicht funktioniert für mich auch:
UPDATE orders SET orders.t_price = (SELECT SUM(items.qt*items.unit_price) from items WHERE orders.id = items.order_id)
- bitte zeigen Sie Ihre vollständige Abfrage, was Sie tun, wie mysql_query("query")
- Ich mache es jetzt in phpmyadmin also die zweite Abfrage oben ist die tatsächliche Abfrage, die ich versuchen: "UPDATE-Aufträge, items, Aufträge.total_price = (SELECT SUM(Artikel.qt*Gegenstände.unit_price) FROM Artikel GROUP BY-Elementen.order_id), WO Aufträge.id = Elemente.order_id"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
UPDATE
mitJOIN
ing die zwei Tabellen:WHERE
- Klausel, um die Versorgung extra-Bedingung zum aktualisieren der Spalte nur angegeben, wenn diese Bedingung wahr, beachten Sie, dass diese Klausel ist optional und schreiben Sie es, wenn Sie es brauchen. Es gab auch 0 Zeilen betroffen, weil es sein könnte, keine Felder der join Bedingungen entsprechen, dieON o.id = i.order_id