[C] Frage zu 'UPDATE' Befehl

Buba235

Erfahrenes Mitglied
Hallo Leute!

Wie muss ich denn den Befehl umschreiben, wenn ich auf 2(bzw. 3 Dinge) achten muss? Im Moment hab ich so einen Befehl:

Code:
const char *sql;

sql = "UPDATE tab 1 SET DIRECTION = 'Inbound' WHERE source = 'meinString'";

Das Problem ist dass nicht "meinString" nicht nur in 'source' vorkommen kann, sondern auch in 'destination'. Wenn "meinString" aber in destination ist, soll in 'DIRECTION' auch OutBound eingetragen werden und wenn er weder in 'source' noch in 'destination' vorkommt, soll in DIRECTION Transfer eingetragen werden. Wie muss ich denn den SQL-Befehl umbasteln, damit er genau das beschriebene macht?

Bin für jede Antwort dankbar.
Gruß
Buba
 
Hi.

Mach doch einfach 3 Updates. Einmal für Inbound, dann für Outbound und zum Schluss für Transfer. Du hast allerdings nicht gesagt was passieren soll wenn 'meinString' in source und destination vorkommt.

Gruß
 
Hallo!


Hmm dann werd ich wohl 3 UPDATE-Befehle machen müssen. Es kann nicht vorkommen, dass 'meinString' in beiden Spalten gleichzeitig vorkommt. Das ist ausgeschlossen. Wäre das wohl wichtig?
 
Okay gut!

Ich hab nur jetzt ein Problem mit dem dritten Fall. Wenn also weder noch, dann soll ja 'Transfer' eingetragen werden. Wie schreib ich das denn? In der DB sind die Felder, wo weder in source, noch in destination 'meinString' vorkommt, leer. Also es steht <NULL> drin. Wie muss denn der SQL-Befehl für diesen Fall aussehen?

Code:
sql_TRANSFER = "UPDATE tab 1 SET DIRECTION = 'Transfer' WHERE 'meinString' NOT IN(source, destination)";

So hab ich es versucht, aber das klappt nicht. Auch mit WHERE source = 'NULL' geht nicht. Gibt es da ne Möglichkeit?
 
Klappt leider nicht! Egal wie ich NULL schreib. Entweder in 'NULL', NULL, Null oder 'Null'. Nichts von dem klappt. Muss ich da jetzt immer nachschauen wo was eingetragen wurde (also InBound oder OutBound) und dann in einer Schleife mit mysql_affected_rows() dann Transfer eintragen?
 
@leitman: Hier geht's gerade um SQL - ist also eigentlich etwas off-topic.

Ich vergaß, in SQL kann man ja nicht mit dem = auf NULL vergleichen:
SQL:
UPDATE tab 1 SET DIRECTION = 'Transfer' WHERE source is NULL AND destination is NULL
Gruß
 
Danke!

Mit IS NULL gehts wunderbar! Also ich muss mal sagen, euere Hilfe hier ist echt phänomenal!

Danke nochmal!

Gruß
 
Zurück