Vielleicht so...
SQL-Code:
UPDATE artikelpreise
SET bruttopreis = (SELECT bruttoneu
FROM artikelpreiseaenderung
WHERE artikelpreis_id = artikelpreise.artikelpreis_id),
nettopreis = (SELECT bruttoneu / (100 + mwstsatz ) * 100
FROM artikelpreiseaenderung
WHERE artikelpreis_id = artikelpreise.artikelpreis_id)
WHERE artikelpreis_id IN (SELECT artikelpreis_id
FROM artikelpreiseaenderung)
Diese Lösung funktioniert zwar, hat aber den Nachteil, dass die Tabelle 'artikelpreiseaenderung' 3x durchlaufen wird.
Und zwar jeweils für jedes Subselect ('nettopreis', 'bruttopreis' und 'where in (Select..)'.
Falls weitere Felder "upgedatet" werden müssen, kommt jeweils ein Durchlauf dazu..
Bei der Verwendung von
SQL-Code:
<merge statement> ::=
MERGE
INTO <table or view> [ [AS] <correlation name> ]
USING <table or view or derived table> [ [AS] <correlation name> ]
ON <condition>
[ <merge when matched> ]
[ <merge when not matched> ]
<merge when matched> ::=
WHEN MATCHED THEN
UPDATE SET <assignment list>
<merge when not matched> ::=
WHEN NOT MATCHED THEN
INSERT [ <left paren> <column list> <right paren> ]
VALUES <left paren> <value list> <right parent>
siehe
hier #13,
wird 'artikelpreiseaenderung' nur einmal durchlaufen.