ordre naturel dans requete

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : ordre naturel dans requete

Re: ordre naturel dans requete

par Aureusms » 19 déc. 2010, 19:47

Ou le trier après...

Re: ordre naturel dans requete

par jeanemar » 19 déc. 2010, 17:29

merci pour l'aide, le plus simple est de de transformer ma colonne en type num et travailler avec des chiffres.

Re: ordre naturel dans requete

par devlop78 » 19 déc. 2010, 02:35

Un champ de type texte ne peut être trié que par ordre alphabétique, c'est à dire que les chaines sont comparées caractère par caractères pour être ordonné. De ce fait, 1, 11 et 153 seront affichées avant 2, 20 et 210.

Pour que ton tri soit cohérent, il te faut soit préfixer tes nombres avec suffisamment de zéro pour que les chaines puissent s'ordonner : "0001", "0002", "0011", "0020" ...

Ou autrement, tu peux utiliser une colonne de type numérique (donc pas de type varchar) qui contiendra juste le numéro de la référence (ou juste une clé de tri) sur laquelle tu pourras faire ton tri comme tu le souhaites :)

J'ai failli le dire, de là à en être certain ...

De toute façon, à partir où tes champs ont le schéma "ref xxxx", alors on peut croire que le mot "ref " est inutile car tout le temps répété, voire faisant partie de la vue (MVC).

Re: ordre naturel dans requete

par Ryle » 18 déc. 2010, 21:51

Un champ de type texte ne peut être trié que par ordre alphabétique, c'est à dire que les chaines sont comparées caractère par caractères pour être ordonné. De ce fait, 1, 11 et 153 seront affichées avant 2, 20 et 210.

Pour que ton tri soit cohérent, il te faut soit préfixer tes nombres avec suffisamment de zéro pour que les chaines puissent s'ordonner : "0001", "0002", "0011", "0020" ...

Ou autrement, tu peux utiliser une colonne de type numérique (donc pas de type varchar) qui contiendra juste le numéro de la référence (ou juste une clé de tri) sur laquelle tu pourras faire ton tri comme tu le souhaites :)

ordre naturel dans requete

par jeanemar » 18 déc. 2010, 19:57

Bonjour,
j'essaye d'ordonner le résultat de ma requete en ordre naturel, la colonne qui me sert d'ordre (colonne ref) est du type text. J'ai regardé du coté de la fonction CAST mais sans y arriver
voici ma requete:

Code : Tout sélectionner

$sql = 'SELECT * FROM ma_table WHERE Publie != "N" GROUP BY Var ORDER BY ref ASC';
par exemple ça me donne comme ordre ref 1, ref 10, ref 2, ...
ce que je souhaite c'est avoir ref 1, ref 2, ref 10...
merci.