Ich habe eine Liste von items
, die zu orders
gehören. Jedes item
hat fee_percentage
Feld. und die Summe von items
ist total_price
in orders
Tabelle.Wie den letzten zugehörigen Datensatz zu aktualisieren
Was möchte ich erreichen? Ich möchte das Feld fee
der zuletzt verknüpften Elemente aktualisieren.
_________________________ __________________________________________
| order ID | total_price| | id | order_id | fee_percentage | fee |
------------------------- ------------------------------------------
| 334 | 425 | | 1 | 334 | 50 | 212 |
# The `fee` should be 213 => | 2 | 334 | 50 | 212 |
Wie Sie die Summe von items
wird sehen 424. I fee
die verbleibende Gebühr zum letzten Punkt hinzufügen möchten. (Also sollte die Gebühr von Artikel-ID 2 213 sein).
Irgendwelche Hilfe bitte?
Dies ist, was ich
bisher geschrieben habeUPDATE items AS i
LEFT JOIN orders AS o ON o.order_id = b.order_id
LEFT JOIN (
SELECT order_id, SUM(fee) AS sum_fee
FROM items
GROUP BY order_id
WHERE deleted = 0
) AS b1 ON b1.order_id = b.order_id
SET b.fee = b.fee + (o.total_price - b1.sum_fee)
WHERE b.deleted = 0;
Ich habe versucht, es zu vorheriger Abfrage zu befestigen oder die last_item_id in Aufträgen Datensatz aktualisieren, aber es funktioniert nicht.
LEFT JOIN (
SELECT order_id, MAX(id) AS b_last_item_id
FROM items
WHERE deleted = 0
GROUP BY order_id
) AS b1 ON b1.order_id = b.order_id
Siehe http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very -simple-sql-query – Strawberry