Page 1 sur 1

probleme requete sur order by

Posté : 25 mars 2008, 15:30
par Invité
Bonjour,

Voila, c'est peux être tout bête mais je pêche la dessus.
Je veux avec ma requête faite afficher dans l'ordre croissant mes enregistrements par rapport au date de programmation, et si celle ci sont égale a 0 que se soit trier par date de résiliation.

Donc moi j'ai mis
order by date_prog, date_resil
mais il m'affiche d'abord les 00-00-0000 puis les dates.
Y aurai-t-il un moyen d'indiquer de classer par ordre de date, pour ceux qui ont une date d'enregistrer ?

merci d'avance

Posté : 25 mars 2008, 18:10
par Ryle
C'est assez logique, si tu classes tes dates par ordre croissant, le 0 vient en premier :)

En général, dans ces cas là, j'utilise un case/when dans le select afin de créer une colonne virtuelle pour le tri :

Code : Tout sélectionner

SELECT ..., CASE date_prog WHEN '0000-00-00' THEN 1 ELSE 0 END AS sort_order FROM ... ORDER BY sort_order, date_prog, date_resil

Posté : 26 mars 2008, 17:38
par Invité
parfait c'est exactement se qu'il me fallait. Je ne connaissais pas du tout cette technique.
Merci beaucoup

Posté : 26 mars 2008, 18:49
par zeus
Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)