[SQL] Trier par ordre croissant après une valeur

Trier par ordre croissant après une valeur [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 11-02-2009 à 10:20:28    

Salut,
 
J'ai une petite question, je sais pas si SQL permet de faire ca.
 
Je voudrai faire une requete qui affiche des villes (par exemple) par ordre alphabétique après une valeur.
 
Exemple:
Villes: Lyon, Nice, Paris, Marseille, Arles
 
Je voudrai afficher les villes par ordre alphabétique en mettant Paris en premier, ce qui donnerai:
 
Paris - Arles - Lyon - Marseille - Nice
 
C'est possible?

Reply

Marsh Posté le 11-02-2009 à 10:20:28   

Reply

Marsh Posté le 11-02-2009 à 11:15:08    

Bonjour.
 
Non, ce n'est pas possible - du moins pas facilement.
Et c'est normal, SQL n'est pas fait pour. Un tri s'effectue sur toutes les valeurs, sinon c'est que les valeurs sont mal choisies.
 
Par exemple, dans ton cas, il faudrait trier surt un autre champ - au hasard on crée "Capitale" (binaire), qui vaut 1 pour Paris et 0 pour le reste. Et il suffit de trier sur ce champ puis sur le nom.
Ou alors, utiliser le champ Id...

Reply

Marsh Posté le 11-02-2009 à 11:21:54    

Ouais c'est bien ce que je pensais. En tout cas merci de ta réponse.
 
Je pense faire 2 requetes l'une à la suite de l'autre. L'une avec la ville prioritaire et une autre avec les autres villes classées par ordre alphabetique.

Reply

Marsh Posté le 11-02-2009 à 11:42:26    

tu pourrais faire un truc dans le style (ex: Oracle)
si t'as pas 200 villes à Trier  
=>
select decode (ville ='Paris',1,decode('Arles',2,decode('wazZZAA',3,4))), ville from matable
order by 1
 
* résultat *  
1 Paris
2 Arles
3 WazZZAA
4 Rouen
4 Metz  
...  


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
Reply

Marsh Posté le 11-02-2009 à 11:44:30    

ou mieux ;-)
=>
select decode (ville ='Paris',1,2), ville from matable  
order by 1, ville  


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
Reply

Marsh Posté le 11-02-2009 à 11:55:50    

Merci, je vais creuser un peu de select decode

Reply

Marsh Posté le 11-02-2009 à 12:01:00    

select decode (ville ='Paris',1,2), ville from matable  
order by 1, ville  
 
=>
 
1 Paris  
2 Arles  
2 Metz  
2 Rouen  
2 WazZZAA  
...


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
Reply

Marsh Posté le 11-02-2009 à 12:31:51    

Avec Mysql ca me donne une erreur:
 
Voila ma requete:

Code :
  1. SELECT decode( cabinet = 'Menton', 1, 2 ) , cabinet
  2. FROM user
  3. ORDER BY 1 , cabinet
  4. LIMIT 0 , 30


 
Et voici l'erreur:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1 , 2 ) , cabinet from user  order by 1 , cabinet
LIMIT 0, 30' at line 1  
 

Reply

Marsh Posté le 11-02-2009 à 13:03:20    

Ce "decode", c'est pas une invention d'oracle?
Moi, j'aurais plutôt utilisé un "if( cabinet = 'Menton', 1, 2 )" avec mysql.
 
PS : pour DECODE avec mysql : http://dev.mysql.com/doc/refman/5. [...] tions.html
On est plus du tout dans le même registre. Il faut faire gaffe quand on utilise des extensions propriétaires.

Reply

Marsh Posté le 11-02-2009 à 13:15:39    

si si omega2 => decode c'est de la sauce Oracle  
 
il faut trouver l'équivalent pour le sgbd utilisé : if, iif, case ...
 
Bon on avance, c'est le principal ;-)


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
Reply

Marsh Posté le 11-02-2009 à 13:15:39   

Reply

Marsh Posté le 11-02-2009 à 13:16:20    

Oui on avance, merci les gars... je vais voir du coté des if

Reply

Marsh Posté le 11-02-2009 à 14:23:17    

vttman2 a écrit :

si si omega2 => decode c'est de la sauce Oracle  
 
il faut trouver l'équivalent pour le sgbd utilisé : if, iif, case ...
 
Bon on avance, c'est le principal ;-)

C'est vraiment domage que ce genre de chose ne soit pas normalisé. Ca nous faciliterait la tache quand on doit faire des requêtes portable un peu évolué.

Reply

Marsh Posté le 19-02-2009 à 13:24:39    

Ben, à la base, C'EST normalisé.
 
Sauf que le déposiaire initial de la norme (à savoir, Oracle) n'a jamais été foutu de respecter sa propre norme.
 
Depuis, c'est plus Oracle qui gère la norme, mais ils n'ont pas cherchés à s'en rapprocher. ^^
 
MySQL et SQL Server font au moins cet effort, même si y'a encore du boulot

Reply

Sujets relatifs:

Leave a Replay

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