tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von sheel
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
279
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von String
    String String ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Beiträge
    238
    Hallo zusammen,

    habe gerade ein kleines MySQL-Problem.
    PHP-Code:
    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
     

  2. #2
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.506
    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:
    Code sql:
    1
    
    SELECT CAST((user_kapital+user_vermoegen) AS signed) AS user_gesamt FROM USER ORDER BY user_gesamt DESC
    String bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    Avatar von String
    String String ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Beiträge
    238
    Und schon klappt es wieder...
    Bedankt

    paD
     

Ähnliche Themen

  1. Abfrage SQL bringt falsches Ergebnis?
    Von vms01 im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 24.03.10, 14:40
  2. Berechnung liefert falsches Ergebnis
    Von trench140 im Forum .NET Café
    Antworten: 2
    Letzter Beitrag: 25.04.08, 23:27
  3. Antworten: 3
    Letzter Beitrag: 22.04.08, 11:09
  4. MYSQL - StoredProcedure - falsches Ergebnis
    Von akkie im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 25.05.06, 10:31
  5. Antworten: 14
    Letzter Beitrag: 08.04.05, 09:48