Tri dans un tri

  • Auteur de la discussion FireBird
  • Date de début

FireBird

Grand Maître
Salut tout le monde,

J'ai une table MySQL (Centres) avec 3 colonnes: Pays, Nom et Fonctions.
Je voudrais faire un tri de telle sorte que quand je trie selon Pays ou Fonctions, il fait un tri secondaire sur Nom.
exemple avec tri par pays

Pays Nom Fonctions
----------------------------------------------------
Australie DCPC NCC
Australie DCPC RSMC
Australie GISC WMC/RTH
Autriche IPS NC
Cuba GISC MIN
France DCPC GCO
France GISC RSMC
Irelande DCPC RTH
Suede GISC RTH

j'ai fait [cpp]SELECT * FROM Centres ORDER BY Pays[/cpp]

Merci d'avance.
 

deathangel67300

Expert


[cpp]SELECT * FROM Centres ORDER BY Pays, Nom[/cpp]


tout simplement en esperant que j'ai bien compris ta question
 

FireBird

Grand Maître


ça marche merci.

J'ai une autre question conernant le tri.
Peut-on indiquer des priorités de tri selon le contenu des colonnes.
Par exemple si je veux IPS avant GISC avant DCPC mais pas selon l'ordre alphabétique ?
 

deathangel67300

Expert
euh, j'ai pas bien compris ce que tu veux faire ^o) tu pourrais détailler ?
 

zeb

Modérateur
FireBird, tu nous as habitué à des problèmes un peu plus épineux.
Il s'agit là du B.A.BA du SQL. Aurais-tu perdu le réflexe de lire le manuel avant de poser une question ?

Tu auras d'ailleurs la réponse à ta question en t'intéressant de près à la clause ORDER BY dans n'importe quel bouquin ou manuel, ou tutoriel sur le SQL.

Que cela ne t'empêche pas de poser d'autres questions, mais si elles restent trop basiques, tu ne recevras qu'un RTFM :o
 

FireBird

Grand Maître


Désolé :pfff:
 

FireBird

Grand Maître

Je voudrais mettre des priorités de tri selon le contenu de la colonne Nom quand je trie selon Pays ou Fonction.

Par exemple mettre IPS avant GISC avant DCPC mais pas selon l'ordre alphabétique ?

Je sais pas mieux m'expliquer. Mais imagine que tu as une table de clients avec leur Nom et que tu veux mettre en évidence les meilleures clients quand tu les tries par Nom.

ben mes meilleurs clients son IPS puis GISC puis DCPC.

Merci
 

zeb

Modérateur
Ah, mais "trier par nom" mais pas par rapport au nom, ce n'est pas "trier par nom" mais c'est "trier par meilleur client".

Alors ajoute une colonne "meilleur client" et trie sur cette colonne.
Évidemment, il ne s'agit pas de créer une colonne dans une table, mais dans ta requête.

Comment, tu n'as pas cette information dans ta base ? Ben tu devrais.
Sinon, la clause CASE devrait t'aider à créer cette colonne :

Code:
SELECT
  Pays, 
  Nom,
  Fonctions,
  CASE Nom WHEN 'IPS'  THEN 3 
           WHEN 'GISC' THEN 2 
           WHEN 'DCPC' THEN 1
                       ELSE 0
  END AS Importance
FROM
  Centres
ORDER BY
  4, 1, 2
 

FireBird

Grand Maître

Zeb, j'ai pas compris ton 4, 1, 2 à la fin.
 

zeb

Modérateur
Et tu as compris le 4, 1, 2 ?
Il s'agit juste du numéro des colonnes de la requête plutôt que leur nom.

Quant à avoir fait ce qu'il fallait, ce serait gentil de dire quoi, pour les autres !
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 135
Messages
6 718 106
Membres
1 586 397
Dernier membre
Chachabidou
Partager cette page
Haut