Problème avec un ORDER BY

Répondre
dna_555
le 26/06/2011 à 07:02
dna_555
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...
jeca
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
LupusMic
le 27/06/2011 à 10:34
LupusMic
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.
dna_555
le 30/06/2011 à 04:49
dna_555
Merci beaucoup ça fonctionne à merveille =)
Il y a une différence, entre connaître le chemin, et arpenter ce chemin...
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours