classer par ordre croissant sauf 0

Invité
Invité n'ayant pas de compte PHPfrance

26 mai 2009, 15:06

Bonjour,

voila je sais pas si c'est possible, lorsque je fais afficher mes enregistrements je veux qu'il soit affiché par ordre croissant, donc pour ça dans ma requête order by. Mais je voudrai que si il y a des 0 celui ci soit pas au début mais a la fin.

merci d'avance

ViPHP
AB
ViPHP | 5818 Messages

26 mai 2009, 18:33

A moins de faire un tri en recréant un tableau d'après le résultat de ta requête, je vois pas.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 mai 2009, 18:41

Tu as aussi la possibilité de faire un

Code : Tout sélectionner

ORDER BY CASE tonChamp = 0 WHEN 99999999 THEN tonChamp
, ce qui reviens à transformer ton 0 en 99999999 et donc le mettre à la fin

Toutefois, mise en garde

1/ Avec cette astuce, aucun index sur le champ ne pourra être utilisé, et ta requête pourrait devenir très longue

2/ Tu prends le risque que, un jour, un nombre dépasse le chiffre que tu places et tu vas te retrouver avec ton 0 au milieu des autres enregistrements.
Et à la réponse "il faut choisir un nombre plus grand", je rétorque que ce n'est que déplacer le problème sous le tapis en attendant qu'il se reproduise.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 881 Messages

26 mai 2009, 18:50

Avec la méthode de Zeus poussée un peu plus, tu peux remplacer tes 0 par une lettre, les lettre viendront après les nombres, peu importe la taille des nombres.
Soyez artisans de paix