Page 1 sur 1

tri alphanumerique

Posté : 15 nov. 2007, 18:48
par asmae
bonjour,

Je veux afficher une liste d'informations en ordre décroissant je fais le select avec "desc", le prolème c'est que le critère sur lequel je veux trier peut contenir des lettres et des chiffres et donc le tri ne se fait pas correctement :

en fait voilà le résultat que j'obtient
10181
10180
1017b
1017a
10179
10178

et voilà le resultat souhaité


10180
10179
10178
1017b
1017a

et voial la requete que je fais
select * FROM `rds_edition`$addtable WHERE $whereSQL AND isNewEdition='1' ORDER BY ref_idRDS DESC LIMIT requeststart,$requestsize
quelqu'un a une solution ???
Merci

Posté : 15 nov. 2007, 19:47
par Victor BRITO
Tu peux utiliser la fonction sort() pour retrier les résultats de la requête.
$requete = mysql_query ("select ref_idRDS FROM `rds_edition`$addtable WHERE $whereSQL AND isNewEdition='1' ORDER BY ref_idRDS DESC LIMIT requeststart,$requestsize");
// Évite le SELECT * lorsque tu n'as besoin que d'une colonne
$resultat = mysql_fetch_assoc ($requete);
$retri = $resultat['ref_idRDS'];
sort ($retri, SORT_STRING);

Posté : 15 nov. 2007, 20:27
par zeus
Tu peux également tenter de caster le contenu du champ directement dans la requête, mais MySQL va ignorer la partie non numérique et j'ai peur que le résultat soit aléatoire pour les occurrences qui contiennent des lettres.

Mais ça vaut le coup d'essayer, surtout que ça sera plus optimisé qu'un tri PHP ;)

Code : Tout sélectionner

SELECT liste, des, champ FROM matable ORDER BY CAST(colonne AS INTEGER)

Posté : 15 nov. 2007, 21:55
par Ripat
Ça ressemble à un tri naturel. Si le cast ne donne rien, essaye ceci pour voir:

Code : Tout sélectionner

SELECT liste, des, champ FROM matable ORDER BY champAtrier + 0 DESC
Une autre manière de CASTer

tri alphanumerique

Posté : 16 nov. 2007, 17:03
par asmae
Merci pour votre interet

en fait j'ai essayé toutes ces solutions mais sans resultat, mnt la seule solution c'est de pouvoir faire la diffrence entre les numero et les chiffre dans le order by et de faire le desc sur les chiffre seuelement sachant que le type du champs dans la base de données c'est varchar

mais encore je sais pas coment faire ????