mysql_query sorteert niet goed

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tom aan t Goor

Tom aan t Goor

02/05/2011 08:05:31
Quote Anchor link
Ik heb hier een stuk code, en daaronder de uitleg:

$bselect = mysql_query("SELECT * FROM `[users]` ORDER BY bustouts DESC LIMIT 0,10");
while($blist = mysql_fetch_assoc($bselect))

{

$brpower = round($blist[bustouts]);
$bpower = number_format($brpower, 0, ",", ".");


nu zou als het goed is de 10 mensen met de meeste bustouts waarde geselecteerd worden.
alleen het probleem is nu, dat ze niet van hoog naar laag staan, wat kan in hier dan aan veranderen/toevoegen?
 
PHP hulp

PHP hulp

28/03/2024 15:12:17
 
Daniel O

Daniel O

02/05/2011 09:45:07
Quote Anchor link
Wat is het datatype van de kolom bustouts?
 
Aad B

Aad B

02/05/2011 10:00:14
Quote Anchor link
Dit kan je binnen de huidige query niet oplossen dus je moet een een nieuwe SELECT op het resultaat doen, en doe geen SELECT *
Bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT x.username, x.bustouts
FROM
 (SELECT username bustouts
  FROM users
  ORDER BY bustouts DESC LIMIT 0,10) X
ODER BY bustouts ASC
 
Daniel O

Daniel O

02/05/2011 10:06:16
Quote Anchor link
@Aad ... welk probleem los jij op? TomTom heeft gewoon een query die hij wil sorteren op een kolom uit de tabel. Wat jij doet is de toptien pakken, en die dan weer omgekeerd sorteren (van laag naar hoog). Overigens heb je een foutje in je subquery en in je ORDER BY.
 
Aad B

Aad B

02/05/2011 10:13:59
Quote Anchor link
@Daniel: TomTom wil de toptien bustouts met bijbehorende mensen. Dat schrijft hij toch?
Ik houd me aanbevolen voor een andere oplossing. De subquery is van TomTom dus wanneer daar een foutje in staat is dat van TomTom.
 
Daniel O

Daniel O

02/05/2011 10:19:58
Quote Anchor link
Ja maar voor toptien van bustouts met naam volstaat een simpele:

SELECT username, bustouts FROM users ORDER BY bustouts DESC LIMIT 10

Als dat niet sorteert zoals verwacht, dan heeft dat waarschijnlijk te maken met het datatype van de kolom. Vandaar dat ik vraag naar het datatype van de kolom.
 
Kees Schepers

kees Schepers

02/05/2011 10:43:41
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
ORDER BY CAST(bustouts AS INTEGER) DESC


Zoiets zal misschien ook wel werken, maar het is waarschijnlijk beter om het datatype van je veld aan te passen.
 
Daniel O

Daniel O

02/05/2011 10:48:36
Quote Anchor link
@Kees gesteld dat het inderdaad een datatype probleem is, dan is dit natuurlijk het paard achter de wagen spannen. Maar goed, dat zeg je zelf ook al ;)
Overigens is INTEGER niet geldig als casttype, UNSIGNED is je vriend.
 
Tom aan t Goor

Tom aan t Goor

02/05/2011 12:19:53
Quote Anchor link
Dank jullie wel :)
De fout was idd dat het datatype niet goed was, dit heb ik nu vernaderd, en het werkt :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.