Problème avec requête sql et ordre d'affichage des champs [résolu]

Problème avec requête sql et ordre d'affichage des champs [résolu] - SQL/NoSQL - Programmation

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
Reply

Marsh Posté le 21-09-2006 à 14:43:58   

Reply

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


Message édité par MagicBuzz le 21-09-2006 à 15:16:29
Reply

Marsh Posté le 21-09-2006 à 15:24:21    

J utilise mysql lié avec du PHP pour un site


---------------
Mon FeedBack | Mon topic de vente
Reply

Marsh 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 :D)
 
par contre tu as un équivalent, lis la doc

Reply

Marsh Posté le 21-09-2006 à 15:31:09    

a priori j'ai trouvé une fonction order by case je crois :)


---------------
Mon FeedBack | Mon topic de vente
Reply

Marsh Posté le 21-09-2006 à 15:31:37    

ça semble pas mal vu le nom en effet :jap:

Reply

Marsh Posté le 21-09-2006 à 15:41:17    

Arf j'ai du mal à comprendre comment m en servir :(


---------------
Mon FeedBack | Mon topic de vente
Reply

Marsh Posté le 21-09-2006 à 15:47:13    

Bon ba c'est pas réglé mon affaire :'(


---------------
Mon FeedBack | Mon topic de vente
Reply

Marsh Posté le 21-09-2006 à 15:55:13    

lien vers la doc ?

Reply

Marsh Posté le 21-09-2006 à 16:03:40    

Reply

Marsh Posté le 21-09-2006 à 16:03:40   

Reply

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

Reply

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 :)


Message édité par CocoRambo le 21-09-2006 à 16:36:38

---------------
Mon FeedBack | Mon topic de vente
Reply

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

Reply

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 ;)

Reply

Marsh Posté le 21-09-2006 à 16:39:44    

En tout cas merci beaucoup d'avoir passé de ton temps à m'aider ;)


---------------
Mon FeedBack | Mon topic de vente
Reply

Sujets relatifs:

Leave a Replay

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