[gelöst] UPDATE mit 2 WHERE?

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

hk3003
**
Beiträge: 36
Registriert: Mo, 31.12.2007 14:19

[gelöst] UPDATE mit 2 WHERE?

Beitrag von hk3003 »

Hallo Forum,
ich habe ein UPDATE wo ich zwei Felder abhängig von einem anderen Feld ändern/nicht ändern möchte. Dabei bekomme ich folgenden Fehler: Unexpected token: , in statement [,]

Code: Alles auswählen

UPDATE "T_Stamm2" SET "H_Kurs"  = "AktKurs" WHERE "AktKurs" > "H_Kurs", 
  "T_Kurs"  = "AktKurs" WHERE "AktKurs" < "T_Kurs" ;
  
lg heinz
Zuletzt geändert von hk3003 am So, 09.04.2023 17:13, insgesamt 1-mal geändert.
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: UPDATE mit 2 WHERE?

Beitrag von RobertG »

Hallo Heinz,

mach' da zwei getrenntes UPDATE-Befehle draus. Die Bedingung des einen Befehls hat ja nichts mit der Bedingung des anderen Befehls zu tun.

Code: Alles auswählen

UPDATE "T_Stamm2" SET "H_Kurs"  = "AktKurs" WHERE "AktKurs" > "H_Kurs" ;
UPDATE "T_Stamm2" SET "T_Kurs"  = "AktKurs" WHERE "AktKurs" < "T_Kurs" ;  
Das hattest Du doch schon, oder? Jedenfalls kannst Du nicht für einen Teil des Updates eine Bedingungen formulieren und für den anderen Teil eine andere Bedingung.

Gruß

Robert
hk3003
**
Beiträge: 36
Registriert: Mo, 31.12.2007 14:19

Re: UPDATE mit 2 WHERE?

Beitrag von hk3003 »

Hallo Robert,
gehen solche Sachen immer nur einzeln oder ist es nur übersichtlicher?
lg heinz
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: UPDATE mit 2 WHERE?

Beitrag von RobertG »

Hallo Heinz,

versuche doch Deine Konstruktion einmal zusammengefasst als Abfrage:

Code: Alles auswählen

SELECT "H_Kurs" , "AktKurs", "T_Kurs"  FROM "T_Stamm2" WHERE "AktKurs" > "H_Kurs" AND "AktKurs" < "T_Kurs" 
WHERE darf nur einmal erscheinen. Danach kommen sämtliche Bedingungen, die für die gesamte Anzeige gelten. Und das ist nicht nur bei der Anzeige so, sondern auch bei der Änderung von Daten.

Also ginge höchstens:

Code: Alles auswählen

UPDATE "T_Stamm2" SET "H_Kurs"  = "AktKurs", 
"T_Kurs"  = "AktKurs" 
WHERE "AktKurs" > "H_Kurs" AND "AktKurs" < "T_Kurs" ;
Dann wäre aber in jedem der gefundenen Datensätze "H-Kurs" = "T_Kurs". Und Du würdest vermutlich auch nicht alle Datensätze finden, sondern eben nur die, bei denen beide Bedingungen erfüllt sind. Ein UPDATE-Befehl arbeitet eben auch nur Zeile für Zeile die Tabelle ab - mit den entsprechenden Filterbedingungen für die anzuzeigende Zeile. Und das, was er machen soll, macht er für alle diese anzuzeigenden Zeilen.

Gruß

Robert
hk3003
**
Beiträge: 36
Registriert: Mo, 31.12.2007 14:19

Re: UPDATE mit 2 WHERE?

Beitrag von hk3003 »

Danke Robert,
es ist mir jetzt etwas klarer!
lg heinz
Antworten