Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1890 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème de tri A à L, M à Z,...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de tri A à L, M à Z,...

n°1674153
lofo7
Posté le 21-01-2008 à 02:32:30  profilanswer
 

Bonjour,
je fais un tri avec une requête MySql mais il y a un problème. Le tri est du style :

Code :
  1. SELECT * FROM table WHERE nom BETWEEN 'M' AND 'Z' ORDER BY nom


Quand je trie mon champ de A à L par exemple, je n'ai que les résultats de A à K et non jusqu'à L.
Pour remédier à ce problème, je trie de A à M et ça marche.
 
Mais là où ça bloque c'est quand je veux trier de M à Z, le tri s'effectue jusqu'à Y et pas Z. Et là pour remédier à ce problème, je cherche toujours la solution car je ne peux pas trier de M à A ou de M à zéro.
 
Quelqu'un a une solution pour que j'obtienne tous mes résultats pour le dernier tri ?
 
Merci
Max

mood
Publicité
Posté le 21-01-2008 à 02:32:30  profilanswer
 

n°1674222
anapajari
s/travail/glanding on hfr/gs;
Posté le 21-01-2008 à 10:33:27  profilanswer
 

rien à voir avec ton tri (order) c'est ton where qui pose problème.
ton between est strictement équivalent à:

Code :
  1. nom>='M'  AND nom<='Z'


Il s'avère que tous les noms qui commencent par Z sont supérieurs à Z.
Par exemple: 'Zorro' > 'Z'


Message édité par anapajari le 21-01-2008 à 10:33:49
n°1674237
MagicBuzz
Posté le 21-01-2008 à 10:45:38  profilanswer
 

faut utiliser une fonction genre left(chaine, longueur) :
 
upper(left(nom, 1)) between 'M' and 'Z'
 
(sauf qu'il faut que tu traduises en MySQL, là c'est des noms de fonctions Oracle)

n°1674375
lofo7
Posté le 21-01-2008 à 13:47:26  profilanswer
 

J'ai résolu le problème mais c'est un peu moche  :lol: . Voilà ce que ça donne :

Code :
  1. SELECT * FROM table WHERE nom BETWEEN 'M' AND 'Zz' ORDER BY nom


 
Donc si j'ai un nom qui commence pas Zza..., il ne sera pas pris en compte mais c'est peu probable que je tombe dessus :D . Et au pire je pourrais mettre AND 'Zzz'.
C'est clair c'est pas très beau mais c'est la manière la plus simple que j'ai trouvé.
 
Merci beaucoup de m'avoir aiguillé !

n°1674377
Elmoricq
Modérateur
Posté le 21-01-2008 à 13:52:49  profilanswer
 

C'est nul comme solution.
 
En plus, à priori tu auras le même problème avec le A-L, si tu as quelqu'un dont le nom débute par un L, il ne sera dans aucune des deux listes.
 
Utilise plutôt la solution de MagicBuzz, à savoir comparer la première lettre du nom uniquement.

n°1674393
MagicBuzz
Posté le 21-01-2008 à 14:08:43  profilanswer
 

A la limite, comme solution naze, autant en utiliser une propre :
 
A-L : where nom < 'M'
 
M-Z : where nom >= 'M'
 
:spamafote:

n°1674427
lofo7
Posté le 21-01-2008 à 14:24:49  profilanswer
 

OK ça marche la solution de MagicBuzz et effectivement c'est plus simple :)
 
Merci beaucoup


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème de tri A à L, M à Z,...

 

Sujets relatifs
Problème d'affichage sur blogCreation site, problème après tentative upload
[ MySQL ] - Problème avec GROUP BY - Help !Problème de miniaturisation avec frontpage
[RESOLU] Problème de lecture MP3 sur page htmlpasser des guillemets dans une txtbox me pose problème
Oracle: Probleme création de tableProblème Firefox
probleme de fgetcProblème de boucle...?
Plus de sujets relatifs à : Problème de tri A à L, M à Z,...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR