MYSQL - Bedingtes Update in einer Anfrage

Cusco

Erfahrenes Mitglied
Hi,

wie können bedingte Updates ausgeführt werden ohne mehere Anfragen zu stellen? hier mein Code:

Code:
function metallwert_berechnen()
{
   global $metallwert,$dbtabelle_verwaltung,$unze,$user;
   if(kontaktdb())
   {
     for($t=0;$t<count($metallwert);$t++)
     {mysql_query("update `$dbtabelle_verwaltung` set `metallwert`=((`anzahl` * `gewicht` / '$unze') * '".$metallwert[$t]."') where (`user` = '$user' and `typ` = '$t');");}
   }
}

Das Problem ist das 4 Anfragen gestellt werden obwohl ggf nur 1 reichen würde. Ich möchte ungefähr folgendes haben:
"update set `metallwert`=100 wenn `typ`=0, `metallwert`=250 wenn `typ`=1, ... where `user`='ich';"
in einer Anfrage, statt der Schleife.
 
Die ist recht simpel :)
Code:
IF(Bedingung erfüllt,machdies, sonstmachdas)

Du kannst innerhalb eines IF() auch weitere IF() nutzen....bei 4 Varianten sollte sich da die Codewurst noch im erträglichen Rahmen bewegen :-)
 
Hi,

ich versuche das gerade mit CASE umzusetzen aber ich habe irgend einen Fehler drin. :( Wo steckt er?

Code:
CASE `typ` WHEN '0' THEN `metallwert`=((`anzahl` * `gewicht` / '31.1034768') * '5940.3') WHEN '1' THEN `metallwert`=((`anzahl` * `gewicht` / '31.1034768') * '110.53') WHEN '2' THEN `metallwert`=((`anzahl` * `gewicht` / '31.1034768') * '2000.24') WHEN '3' THEN `metallwert`=((`anzahl` * `gewicht` / '31.1034768') * '288.24') ELSE `metallwert`='-1' END CASE

Ich habe nur die CASE gepostet, aber darin scheint der Fehler zu stecken, laut Mysql. Es ist übrigends eine UPDATE - Anfrage.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE `typ` WHEN '0' THEN `metallwert`=((`anzahl` * `gewicht` / '31.1034768') * '' at line 1
 
Zuletzt bearbeitet:
Zurück