plusieurs ORDER BY

plusieurs ORDER BY - SQL/NoSQL - Programmation

Marsh Posté le 07-05-2008 à 13:53:54    

Bonjour,
 
une toute petite question toute bete :)
 
est ce normal que lorsque je mets ORDER BY champ1, champ2 ca ne marche pas? il applique l'ordre que sur champ1. ex :
 
SELECT * FROM table WHERE ... ORDER BY nom, pays
 
l'affichage est bien classe par nom, mais alors les pays sont en desordre :(
 
merci de votre aide

Reply

Marsh Posté le 07-05-2008 à 13:53:54   

Reply

Marsh Posté le 07-05-2008 à 13:56:11    

Bah c'est seulement si le nom est égal pour plusieurs entrées qu'il va ordonner par pays hein, sinon il va avoir du mal.
 
Désolé si je te prends pour un neuneu pour rien [:dawa], mais sinon je vois pas de raison non. 'pays' est de quel type ? Et ce serait bien d'avoir un exemple.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 07-05-2008 à 14:39:13    

au fait, ce que je veux faire c'est afficher les resultas classe par nom de famille, et aussi par pays. Exemple:
 
SELECT nom, pays FROM table WHERE ...  
me donne les resultats suivants :
 
Nom    |     Pays
-----------------------
Dupont |    France
Ulrich    | Allemagne
Martin   | France
Donald   | Etats unis
blabla    | Inde
toto     | Argentine
Albert   | Allemagne
 
j'aimerais avoir l'affichage suivant:
 
Nom    |     Pays
-----------------------
Albert   | Allemagne
blabla    | Inde
Donald   | Etats unis
Dupont  | France
Martin   | France
toto     | Argentine
Ulrich    | Allemagne
 
 
pour la lettre 'D' j'affiche Donald en premier car 'E' de 'Etats unis' est avt 'F' de 'France'
 
 

Reply

Marsh Posté le 07-05-2008 à 14:40:50    

Les ORDER BY plusieurs paramètres fonctionnent. Cela dit, les pays sont dans le désordre sur le global, mais pour 2 noms identiques ils seront triés
 
dans ton exemple :  
si tu as comme données :
nom      |   pays
--------------
bernard |  suisse
josiane  |  france
bernard |  belgique
arnaud  |  france
 
Avec la requete :

Code :
  1. SELECT * FROM table WHERE ... ORDER BY nom, pays


Cela donnera:
 
nom      |   pays
--------------
arnaud  |  france
bernard |  belgique
bernard |  suisse
josiane  |  france
 
Si tu veux que les pays soient dans l'ordre, puis pour chaque pays que les noms soient dans l'ordre, il faut mettre  :

Code :
  1. SELECT * FROM table WHERE ... ORDER BY pays, nom


et alors tu auras :
 
nom      |   pays
--------------
bernard |  belgique
arnaud  |  france
josiane  |  france
bernard |  suisse
 
 
Mais comme chaque pays est lié aux noms, jamais tu ne pourras avoir :
 
nom      |   pays
--------------
arnaud  |  belgique
bernard |  france
bernard |  france
josiane  |  suisse
 

Reply

Marsh Posté le 07-05-2008 à 14:47:06    

Posts croisés.... :pt1cable:  
 
En fait tu veux que le tri ne porte que sur la première lettre  :heink: ???  
 
Ben si c'est vraiment ça, il faudrait que tu mettes :

Code :
  1. ORDER BY substr(nom,1,1), pays

Reply

Marsh Posté le 07-05-2008 à 14:53:16    

Ah oui d'accord, OK, je comprends mieux mnt :)
 
merci bp ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed