Page 1 of 1

ORDER BY funktioniert so nicht?

Posted: 2004-02-24 17:02
by debian inside

Code: Select all

SELECT  * ,  IF ( votes > 0, ( rating / votes ),  '0' ) AS comp FROM  `bb1_userpics`  WHERE 1 ORDER  BY comp DESC 
kann mir jemand sagen wieso das so nicht funktioniert?
die reihenfolge wird scheinbar zufällig ausgegeben


danke,
Thomas

Re: ORDER BY funktioniert so nicht?

Posted: 2004-02-24 17:15
by oxygen
Also ich habe das gerade mal mit einer ähnlichen tabelle getestet und es funktioniert. Wie sieht deine Tabelle genau aus? Haben die Spalten möglicherweise nicht den richtigen Datentyp?

Re: ORDER BY funktioniert so nicht?

Posted: 2004-02-24 17:21
by debian inside
rating int(10)
votes int(10)

für comp kommt ne zahl zwischen 0.00 und 10.00 heraus, also mit kommastellen

Re: ORDER BY funktioniert so nicht?

Posted: 2004-02-24 18:13
by debian inside
ach jetzt hab ich den grund erkannt

es wird wie ein text geordnet...nach den anfangszeichen

mal kucken wie man das ändern kann
falls jemand die lösung kennt bitte helfen

Re: ORDER BY funktioniert so nicht?

Posted: 2004-02-24 18:21
by 007killer
Die DB bb1_userpics is vom woltlab burning forum (wbboard). Ich würde sagen das du deine Fragen bei http://www.woltlab.de oder bei http://www.mywbb.info stellst, weil da bekommst du schneller eine Antwort weil es dort fast nur um das Board geht.

Re: ORDER BY funktioniert so nicht?

Posted: 2004-02-24 18:26
by debian inside
die tabelle bb1_userpics ist von mir und zwar zu 100%
das bb1_ steht da nur weil ich es für ein wbb2 schreibe und somit sollte es hier genau richtig sein

Re: ORDER BY funktioniert so nicht?

Posted: 2004-02-24 19:10
by 007killer
Naja dann frag doch da ?! Die kennen sich damit aus auch mit PHP und MySQL !?

Re: ORDER BY funktioniert so nicht?

Posted: 2004-02-24 19:22
by debian inside
007killer wrote:Naja dann frag doch da ?! Die kennen sich damit aus auch mit PHP und MySQL !?
danke aber ich hatte den eindruck das sich hier auch ein paar auskennen :wink:

Re: ORDER BY funktioniert so nicht?

Posted: 2004-02-25 10:55
by ego
Kurze Frage am Rande. Wie begrenzt du die Ausgabe im Query?
Ich lese hier nur "WHERE 1"...du solltest dort noch den Feldnamen angeben, also "WHERE feldname=1" dann wäre der Query auch syntaktisch richtig.
debian inside wrote:

Code: Select all

SELECT  * ,  IF ( votes > 0, ( rating / votes ),  '0' ) AS comp FROM  `bb1_userpics`  WHERE 1 ORDER  BY comp DESC 
kann mir jemand sagen wieso das so nicht funktioniert?
die reihenfolge wird scheinbar zufällig ausgegeben


danke,
Thomas

Re: ORDER BY funktioniert so nicht?

Posted: 2004-02-25 14:29
by oxygen
WHERE 1 <- phpMyAdmin stuff... kann man einfach weglassen.

Re: ORDER BY funktioniert so nicht?

Posted: 2004-02-25 14:47
by deanwickert
debian inside wrote:

Code: Select all

SELECT  * ,  IF ( votes > 0, ( rating / votes ),  '0' ) AS comp FROM  `bb1_userpics`  WHERE 1 ORDER  BY comp DESC 
Also ich komme da mit dem IF nicht so ganz klar.
Das MySQL Manual schweigt sich auch darüber aus.
Aber ich gehe mal davon aus, dass IF eine Funktion ist wie COUNT o.ä.
Dann muss es nämlich "IF(" heißen und nicht "IF (", also das Leerzeichen zwischen IF und der Klammer müsste dann weg.

Re: ORDER BY funktioniert so nicht?

Posted: 2004-02-25 17:37
by debian inside
das WHERE 1 ist vom phpmyadmin richtig....ist aber in diesem fall auch egal

das leerzeichen zwischen dem if und der klammer ist auch nicht der grund


es wird einfach comp als text gereiht....also zbsp:

comp:
8.00
7.67
6.20
4.67
4.50
10.00
0


aber mitlerweile hab ich den grund

'0' dadurch wird comp als string interpretiert -> nur 0

danke,
Thomas

Re: ORDER BY funktioniert so nicht?

Posted: 2004-02-25 18:08
by kase
Ein Fehler, der zuuuuu gerne und immer immer wieder gemacht wird, bitte Leute, lasst bei Integer Werten die Anführungszeichen weg ;)

SELECT * FROM `table` WHERE id > 500

und NICHT

SELECT * FROM `table` WHERE id > '500'