PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL Update Satement



09-04-2001, 17:37
Habe folgendes SQL-Problem: Es existiert eine Tabelle mit den Feldern A, B, C. A ist in Vebindung mit B eindeutig. (A= produktnummer, b=datum).

Wie schaffe ich es, daß C mit dem Datum "heute" den Wert von C mit dem Datum "gestern" überschrieben wird, aber nur wenn C von heute kleiner als c von gestern ist. http://www.linuxforen.de/ubb/confused.gif

Ich dachte, SQL ist einfach http://www.linuxforen.de/ubb/wink.gif

LKH
10-04-2001, 18:03
Hallo,

dein Statement ist unlogisch. Heute kann nie kleiner als gestern sein ....

Hans-Georg Normann
10-04-2001, 19:04
Hi LKH

habe mich warscheinlich undeutlich ausgedrückt. Nehmen wir an
a = ProduktNummer
b = Datum (Preisdatum)
C = Preis

Die Preise werden berechnet und der Tabelle hinzugefügt. Nun sollen alle aktuellen Preise mit den alten Preisen überschrieben werden, wenn der alte Preis größer als der neue Preis ist.

Ich war in der verstrichenen Zeit nicht ganz untätig. Wenn ich das richtig gesehen habe, können nur die wenigsten Systeme ein Satement der Form

Set Feld = Select ..........

verarbeiten. (angeblich Oracle).

Hans

Hans-Georg Normann
11-04-2001, 22:16
Hallo Martin

die Frage war erst mal ganz allgemein gemeint (aktueller Anlass war eins derartige Programmierung in Delphi, "local SQL").

Habe mich Linux Datenbanken noch nicht so sehr beshäftigt. Nach allem was ich oberflächlich gelesen und gesehen habe, würde ich zu Postgres oder Interbase tendieren, vorrausgesetzt die Company spendiert mir mal letztere Datenbank :D

Trotzdem Danke
Hans

Martin Ament
12-04-2001, 00:23
Hi,

ich glaube was du suchst, ist ein sogenannter Subselect und es ist richtig oracle beherrscht diesen.

Habe jetzt nicht nachgeschaut ob mysql das beherrscht, bei Oracle geht das in dieser art:

update tab_a set (feld a, feld b) = (select feld a, feld b from tab_b where dat > xxxx)

das ist die Synthax von Oracle.

Ich weiss nicht genau, mit welchen mitteln du mysql bearbeitest, aber solltest du php verwenden, so kannst du das mit einem Array und einer schleife relativ einfach bewerkstelligen, und umgehst damit den subselect.

Gruss Martin