Problème avec un ORDER BY
Bonjour !
J'ai un gros problème avec un ORDER BY , j'ai une suite de nombres à trier dans ma BDD mais ils sont tous séparé avec un espace (95 000, 230 000, 789 000 ... ect ).
Le problème c'est que si je fais un ORDER BY ASC il va me sortir:
-230 000,789 000, 95 000
voici ma ligne de code:
$skud=mysql_query("SELECT * FROM table WHERE id!='1' && type='$_POST[t_type]' ORDER BY prix ASC");
Merci !!
Il y a une différence, entre connaître le chemin, et arpenter ce chemin...
le 26/06/2011 à 11:52
jeca
Bonjour,
J'ai un gros problème avec un ORDER BY
Le problème est plutôt le format adopté pour enregistrer les valeurs.
Si celui-ci ne peut être modifié, tu peux toujours faire comme ça :
<?php
SELECT CAST(REPLACE(prix, ' ', '') AS SIGNED) as valeur
FROM laTable
ORDER BY valeur
?>
cordialement
Jeca a bien vu le problème, mais je ne suis pas fan de sa solution. À chaque fois qu'on lance la requête, un nouveau champ temporaire est calculé (ce qui signifie à coup sur l'instantiation d'une table temporaire). Cela peut être désastreux pour les performance.
Des entiers ne devraient pas être enregistrés dans un type chaîne de caractères. S'il y a besoin d'un formatage spécial, celui-ci devrait être réalisé à l'affichage.
Pour changer le type de la colonne :
alter table laTable add column prix_num integer ;
update laTable set prix_num = cast(replace(prix, ' ', '') as signed) ;
alter table laTable drop column prix ;
alter table laTable change prix_num prix integer ;
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Merci beaucoup ça fonctionne à merveille =)
Il y a une différence, entre connaître le chemin, et arpenter ce chemin...
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: