Einzelnen Beitrag anzeigen

alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#19

AW: SQL-Statement funktioniert nicht

  Alt 8. Jul 2011, 09:18
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.
Alexander
  Mit Zitat antworten Zitat