Einzelnen Beitrag anzeigen

Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Update mit WErten aus zweiter Tabelle

  Alt 22. Feb 2006, 17:13
Zitat von Gruber_Hans_12345:
Hi

Also, in der ARTIKEL Tabelle sind über 2000 Datensätze
in der MATERIAL Tabelle sind so 10-20 Datensaätze, also wäre es eventuell geschickter noch ein WHERE fürs UPDATE zu machen, damit nicht alle Artikel geupdatet werden oder ?

SQL-Code:
UPDATE ARTIKEL SET GEPLANT = GEPLANT +
       coalesce(SELECT SUM(MENGE) FROM MATERIAL
              WHERE MATERIAL.ARTIKEL = ARTIKEL.ID AND MATERIAL.TEIL = 1), 0) WHERE ID IN (SELECT ARTIKEL FROM MATERIAL WHERE TEIL = 1);
oder kann man das noch elegenater lösen ?
Ich denke nicht, dass du damit eine bessere Performance erzielst, da der Server trotzdem für jeden Record aus Taberlle Artikel das IN - Statement ausführen muss. Du vermeidest allerdings so Lock - Konflikte, da nich so viel Updates gefeuert werden.

Hier würde ich eine Procedure schreiben, wo du einen group select über Material machst und diesen dann durchläufst und Artikel updatest.

Ungetestet:
SQL-Code:
CREATE PROCEDURE UPDATE_ARTIKEL_GEPLANT
AS
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE MENGE INTEGER;
begin
  for select artikel, sum(menge) from material
             where teil=1
             group by artikel
             into :id, :menge
  do
    update artikel set geplant = geplant + :menge
           where id = :id;
end
Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat