ChrisB: UPDATE mit IF verschachteln

Beitrag lesen

Hi,

Ich versuche einen Datensatz abhängig von einem Feld des entsprechenden Datensatzes zu aktualisieren.

Leider ohne Erfolg. Eigentlich müsste doch ein IF innerhalb des UPDATE funktionieren, oder? Wo liegt mein Denkfehler?

Ja, das geht - aber du musst dir klar machen, dass IF keinerlei "Zuweisungsfunktionalitaet" hat, sondern lediglich den Wert einer von zwei "Expressions" zurueckgibt.

Ausserdem scheinst du zwei Spaltenwerte auf einmal setzen zu wollen?

IF(to_user = '1', SET delete_to = 'y', SET delete_from = 'y')

Zweiter und dritter Parameter sind kein "Wert", sondern der Versuch, SET an falscher Stelle zu platzieren

SET IF(to_user = '1', delete_to, delete_from) = 'y'

SET IF ist auch unsinnig, weil IF wie gesagt lediglich einen Wert zurueckliefert - SET will aber erst mal die Spalte haben, deren Wert es setzen soll.

SET IF(to_user = '1', delete_to = 'y', delete_from = 'y')

Dito.

Funktionieren sollte:
SET spalte = [Wert, den IF zurueckgibt]

Also in etwa so:

SET delete_to   = IF(to_user = '1', 'y', 'n'),  
    delete_from = IF(to_user = '1', 'n', 'y')

Und wenn du nicht jeweils 'n' als Alternativwert fuer ein 'y' haben willst - dann kannst du an dessen Stelle natuerlich auch einfach den Spaltennamen hinschreiben, um den bestehenden Wert zu belassen.

Btw: Welche Daten bilden die Spalten delete_to und delete_from ab? Aus welchem Grund laesst sich das nicht in einer Spalte unterbringen?

MfG ChrisB