[MySQL] Fehler im phpmyadmin bei SQL - erledigt

justme69

Im RL-Dauerstress
ID: 99452
L
25 April 2006
676
13
Bin ich blind ?

ich sehe im folgenden SQL keinen Fehler:
PHP:
UPDATE artikel 
SET Preis = 
ROUND ( ( Preis + ( Preis / 100 * 7 ) ) , 2 ) 
WHERE Preis > 0 ;

phpadmin sagt:
#1064 - 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 '( ( Preis + ( Preis * 7 / 100 ) ) , 2 )
WHERE Preis > 0' at line 3

Es ist MySQL 4.1.22 installiert, Zeile 3 ist der Round() Befehl...
Meine auch schon das ausgeführt zu haben - zu einem anderen Zeitpunkt...
Es gibt die Tabelle artikel und das Feld Preis ebenfalls

Was mach ich falsch ?
Danke
 
Zuletzt bearbeitet:
Also laut Manual gibt eine die Funktion ROUND(X, D) für MySQL4; schaut also gut aus.

Geht denn
Code:
[FONT=Courier New][B][COLOR=#9932cc]UPDATE[/COLOR][/B] artikel 
[B][COLOR=#9932cc]SET[/COLOR][/B] Preis = 
 ( Preis + ( Preis / 100 * 7 ) )
[B][COLOR=#9932cc]WHERE[/COLOR][/B] Preis > 0 ;  [/FONT]
?
 
So ein Sch...

Ja, ohne round() funzt das Ganze....

Es ist aber MySQL 4.1.22 ... warum also geht das nicht

auch das nachträgliche
PHP:
UPDATE artikel SET Preis = ROUND(Preis , 2) ;
bricht ab.

Preis ist als double definiert in der Tabelle
 
Vielleicht packt MySQL4 das ROUND im UPDATE ned. Schon mal einfach n SELECT gemacht? Oder mal auf ner MySQL5 ausprobieren. Ich tipp drauf, dass die alte Version das gar nicht kann.
 
Auch beim select gibts ne Fehlermeldung...
Sch...

So kann man seine Zeit verschwenden..

Danke dir ... ich hätt noch ne Weile gesucht... ;)

Hab jetzt noch nen truncate(preis, 2) hinten drangehängt.
ist zwar mathematisch nicht dasselbe, aber besser als 4 oder 5 Nachkommastellen beim preis ;)
 
Um noch den eigentlichen Fehler zu lösen:

So wie's aussiehst, liegt's schlicht und einfach daran, dass Du ein Leerzeichen nach ROUND stehen hast. MySQL ist da leider sehr wählerisch...
 
Um noch den eigentlichen Fehler zu lösen:

So wie's aussiehst, liegt's schlicht und einfach daran, dass Du ein Leerzeichen nach ROUND stehen hast. MySQL ist da leider sehr wählerisch...
siehe Post #3 - da ist nach dem round kein Leerzeichen gewesen - und dennoch gabs die Fehlermeldung, sorry das kanns nicht sein. ;)