MySQL addieren - Falsches Ergebnis?

String

Erfahrenes Mitglied
Hallo zusammen,

habe gerade ein kleines MySQL-Problem.
PHP:
SELECT (user_kapital+user_vermoegen) AS user_gesamt FROM user ORDER BY user_gesamt DESC

Das funktioniert soweit auch. Wenn allerdings eine Zahl von den beiden negativ größer, also wenn das Ergebnis negativ ist - Errechnet MySQL sehr sehr eigenartige Ergebnisse:

User-Kapital / User-Vermoegen
50 / 100 = 150 -- OK
-10 / 5 = 18.446.744.073.709.552.000 .... ich glaube ohne das 1 mal 1 zu können, sieht man dass hier was nicht stimmt..

In der Datenbank sind user_kapital int 10 und user_vermoegen int 10 (unsigned)

Habt ihr ne Idee, was dass sein kann?
Rechne ich die Felder in der Schleife mit PHP zusammen funktioniert alles problemlos..

Danke im Voraus :)

paD
 
Hi

wenn beide Spalten unsigned sind, wie bekommst du dann -10 rein?

Wenn gemeint war, Kapital ist unsigned und Vermögen nicht:
Das Gesamtergebnis wird anscheinend als unsigned int (64bit) genommen,
also keine negativen Zahlen erlaubt.

Computerbedingt wird bei unsigned -1 zur größten Zahl,
-2 zur Größten - 1, -3 zur Größten -2 usw...
je negativer es wird, desto weiter wird von oben wieder runtergezählt.

Kenn nicht alle Stellen von deinem Ergebnis,
aber die größte 64bit-Zahl ist so um 1.8 * 10^20 herum,
und das minus 5 macht auch keinen großen Unterschied.


Man müsste das Ergebnis also signed machen...
muss suchen...

edit: Probbier das mal:
SQL:
SELECT cast((user_kapital+user_vermoegen) as signed) AS user_gesamt FROM user ORDER BY user_gesamt DESC
 
Zurück