Problème avec requête sql et ordre d'affichage des champs [résolu] - SQL/NoSQL - Programmation
Marsh Posté le 21-09-2006 à 15:15:57
tu fais deux tris :
un premier sur un test sur la valeur nulle, histoire d'avoir vrai/faux, puis un second tri sur ton cham
tu utilises quel sgbd ?
avec oracle, ça donnerait :
order by decode(champ, null, 0, 1) asc, champ desc
Marsh Posté le 21-09-2006 à 15:24:21
ReplyMarsh Posté le 21-09-2006 à 15:28:58
ben donc décode n'existe pas (enfin, si, mais il fait pas la même chose )
par contre tu as un équivalent, lis la doc
Marsh Posté le 21-09-2006 à 15:31:09
a priori j'ai trouvé une fonction order by case je crois
Marsh Posté le 21-09-2006 à 15:41:17
ReplyMarsh Posté le 21-09-2006 à 15:47:13
ReplyMarsh Posté le 21-09-2006 à 16:03:40
http://dev.mysql.com/doc/refman/5. [...] ement.html
Marsh Posté le 21-09-2006 à 16:35:06
bah koi ?
c'est comme sql server tiens.
order by case champ when null then 0 else 1 end asc, champ desc
Marsh Posté le 21-09-2006 à 16:35:58
Je vais essayer ce que tu viens de me donner mais sinon j'ai trouver une solution grâce à ce lien:
http://www.shawnolson.net/a/730/
Je pratique pas trop sql server
Marsh Posté le 21-09-2006 à 16:36:15
et s'il te tape un délire comme quoi ça marche pas, tu rajoute le "case machin pouet end" dans ton select et tu tries par cette colonne
Marsh Posté le 21-09-2006 à 16:37:37
sinon, oui, isnull c'est carrement mieux (c'est un peu ce qu'on tente de faire avec le case là )
à la base, vu que les fonctions y'a pas deux sgbd qui ont les mêmes, c'est pas évident
Marsh Posté le 21-09-2006 à 16:39:44
En tout cas merci beaucoup d'avoir passé de ton temps à m'aider
Marsh Posté le 21-09-2006 à 14:43:58
Bonjour,
Voilà je vous explique le "problème"
Je voudrais trier tous les champs d'une table pour les afficher selon un champ sachant que ce champs peut être NULL
1. Je voudrais donc trier de manière à afficher d'abord les champs ou la valeur est NULL
2. Ensuite trier le reste du plus grand au plus petit
Pour donner un exemple:
Voici 5 champs d'une table:
06030
NULL
06031
NULL
NULL
Voilà le résultat que je souhaiterai obtenir:
NULL
NULL
NULL
06031
06030
Je réussi à obtenir ceci en faisant un order by monchamp ASC:
NULL
NULL
NULL
06030
06031
Vous l'aurez devinez si je fais un order by monchamp DESC, j obtiens:
06031
06030
NULL
NULL
NULL
Merci d'avance pour votre aide
Message édité par CocoRambo le 21-09-2006 à 16:36:13
---------------
Mon FeedBack | Mon topic de vente