sql ORDER BY ... DESC

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


XenonDelee
WRInaute impliqué
WRInaute impliqué
 
Messages: 923
Inscription: 6 Avr 2004

sql ORDER BY ... DESC

Message le Lun Mar 14, 2005 10:30

Bonjour,

je viens de faire une constatation étonnante sur la requète suivante

Code: Tout sélectionner
SELECT * FROM matable  ORDER BY Prix DESC


me renvoit des prix classés de cette manière

Code: Tout sélectionner
900
800
700
1500
1400
1200


j'aurai attendu plutot quelque chose du genre

Code: Tout sélectionner
700
800
900
1200
1400
1500


Quelqu'un connait-il la raison de cette aberration et le moyen d'y remédier ?

D'avance Merci :!:


chava2b
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 263
Inscription: 5 Déc 2003

Message le Lun Mar 14, 2005 10:43

Quel est le type de ton champ "prix" ?

Il faudait qu'il soit de type Int (ou plus optimisé en fonction du max)


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Lun Mar 14, 2005 10:45

tu es en varchar. donc ->
SELECT * FROM matable ORDER BY Prix *1 DESC

le *1 force la transformation en nombre


XenonDelee
WRInaute impliqué
WRInaute impliqué
 
Messages: 923
Inscription: 6 Avr 2004

Message le Lun Mar 14, 2005 10:53

Ok c'est exactement le problème rencontré ( je suis en varchar )

merci à vous !

A+


JeunZ
WRInaute accro
WRInaute accro
 
Messages: 5301
Inscription: 18 Fév 2004

Message le Lun Mar 14, 2005 11:03

e-kiwi a écrit:tu es en varchar. donc ->
SELECT * FROM matable ORDER BY Prix *1 DESC

le *1 force la transformation en nombre


On se croirait en Ocaml à faire des opérations "inutiles" pour changer le type.


XenonDelee
WRInaute impliqué
WRInaute impliqué
 
Messages: 923
Inscription: 6 Avr 2004

Message le Lun Mar 14, 2005 11:53

pas si inutile que ça ...

j'ai changé le type ( de int à varchar ) car sur l'hébergeur chez qui je suis la base est bizarement configurée

j'ai beau mettre null et valeur par défaut vide ... si on ne rentre pas de chiffre ça met 0 !!!!

alors j'ai mis en varchar et donc voila d'où venait mon problème et donc la conversion est utile :wink:

Haq
WRInaute passionné
WRInaute passionné
 
Messages: 2104
Inscription: 29 Aoû 2002

Message le Lun Mar 14, 2005 11:58

De toute façon, je suppose que tu ne vends rien à 0 euro... donc tu peux mettre ton champ en "int" et gérer le cas particulier du prix non connu (0) avec php.


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Lun Mar 14, 2005 12:02

l embetez pas, ma technique elle marche, le reste est son problème, il le gere comme il veut :-)


XenonDelee
WRInaute impliqué
WRInaute impliqué
 
Messages: 923
Inscription: 6 Avr 2004

Message le Lun Mar 14, 2005 12:30

aK a écrit:De toute façon, je suppose que tu ne vends rien à 0 euro... donc tu peux mettre ton champ en "int" et gérer le cas particulier du prix non connu (0) avec php.


non mais mon client voulait pouvoir mettre des articles sans prix ...

cependant, effectivement, c'est aussi une solution de traiter ça par php :lol:

A+


JeunZ
WRInaute accro
WRInaute accro
 
Messages: 5301
Inscription: 18 Fév 2004

Message le Lun Mar 14, 2005 12:32

La solution de e-kiwi est quand meme plus simple ;-)

yanhl
WRInaute impliqué
WRInaute impliqué
 
Messages: 793
Inscription: 4 Déc 2003

Message le Lun Mar 14, 2005 13:01

j'ai beau mettre null et valeur par défaut vide ... si on ne rentre pas de chiffre ça met 0 !!!!

T'aurais pas fait ça en deux étapes et regardé le résultat après ? Ou bien passé de varchar à int après avoir déjà fait des insertions ?
j'ai jamais entendu parler d'une config comme ça.

Essaye quand même de faire un
UPDATE table SET prix=NULL WHERE prix=0
et regarde comment se comportent tes insertions après.

La bidouille c'est cool mais bon, c'est quand même mieux de faire un truc propre et où l'on trouve pourquoi ça ne fonctionnait pas.


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Lun Mar 14, 2005 13:20

JeunZ a écrit:La solution de e-kiwi est quand meme plus simple ;-)


aahh, merci :-)

Haq
WRInaute passionné
WRInaute passionné
 
Messages: 2104
Inscription: 29 Aoû 2002

Message le Lun Mar 14, 2005 13:51

Entre simplicité et rigueur, j'ai choisi ;-)


XenonDelee
WRInaute impliqué
WRInaute impliqué
 
Messages: 923
Inscription: 6 Avr 2004

Message le Lun Mar 14, 2005 14:19

yanhl a écrit:j'ai jamais entendu parler d'une config comme ça.


ben moi non plus j'avais jamais vu ça !

mais j'ai fait des test avec de nouvelles insertions !

( donc pas besoin de faire de update ... )

et ben ça marche pas !!!

ça me met des 0 partout où j'ai laissé la case vide :evil:

yanhl
WRInaute impliqué
WRInaute impliqué
 
Messages: 793
Inscription: 4 Déc 2003

Message le Lun Mar 14, 2005 14:36

et c'est quoi le code de ton insertion ?
INSERT INTO matable (prix) VALUES (''), non ? Vu que tu étais partit en varchar, ce serait bien possible.
Faut savoir que le zéro existe et que '' donne zéro. Pour avoir NULL, il faut faire :
INSERT INTO matable (prix) values (NULL)
donc faire une distinction au moment de l'insertion.

Je pense que là on doit y être : j'ai fait un test pour vérifier mes dires et être bien sûr de ne pas écrire de connerie.

sql ORDER BY ... DESC

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités