Trier plusieurs fois les enregistrement avec ou sans DESC

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 : Trier plusieurs fois les enregistrement avec ou sans DESC

par orgerix » 02 mars 2007, 22:27

OK, merci beaucoup.

Par chance j'utilise MySQL :D

par Hubert Roksor » 02 mars 2007, 20:32

Donc cette colonne ne peut prendre que 3 valeurs différentes "a", "b" ou "c" ? MySQL a une fonction FIELD() qui sert à faire ça. Pour les autres SGBD il faudra faire preuve de créativité.

Code : Tout sélectionner

SELECT * FROM table ORDER BY FIELD(champ, 'b', 'a', 'c')

Code : Tout sélectionner

SELECT *, CASE champ WHEN 'b' THEN 0 WHEN 'a' THEN 1 ELSE 2 END AS ordre ORDER BY ordre

par orgerix » 02 mars 2007, 14:46

Merci pour la reponse à la deuxième question

La deuxième question a été mal comprise (faut dire que je suis pas claire :P )

Dans une colonne, les valeurs sont a, b et c.

J'aimerai que les ligne avec b soient avant les ligne avec a, elles même avant les lignes avec c.

Bref, faire une fonction personnelle de tri.

par zeus » 02 mars 2007, 14:01

1ere question :
Il est possible de donner l'attribut ASC ou DESC à chaque colonne.
Ainsi, si tu veux trier par la colonne a, croissant et b, décroissant, tu écris

Code : Tout sélectionner

ORDER BY a ASC, b DESC
Comme l'attribut ASC est facultatif et représente le choix par défaut, tu peut simplifier par

Code : Tout sélectionner

ORDER BY a, b DESC
2eme question :
L'ordre de tri se fait selon l'ordre des champs dans le order by.
Ainsi, si tu veux trier selon la colonne b, a et c (si la valeur du champ b est identique pour 2 enregistrements, le tri se fait sur la valeur du champ a puis du champ c), tu écris :

Code : Tout sélectionner

ORDER BY b, a, c

par Shrell » 02 mars 2007, 13:58

y'à qu'à demanderà MySQL, il est très discipliné ;)

Code : Tout sélectionner

... ORDER BY B DESC, a ASC, c DESC

Trier plusieurs fois les enregistrement avec ou sans DESC

par orgerix » 02 mars 2007, 13:34

Bonjour

POur faire un tri sur plusieursenregistrement, on ajoute les critère à la suite de ORDER BY.

Pour faire un trie par ordre décroissant, on utilise DESC.

Quel est la syntaxe pour trier par ordre décroissant suivant une colonne puis par ordre croissant suivant une autre colonne ?

Une autre question, pouvont nous faire un tri personnalisé, en indiquant l'ordre des différente entrée. Par exemple, une colonne contient a, b et c et je veux que la table sois trier avec d'abord b puis a puis c