Bonjour tous,
je suis un peu à la ramasse pour exécuter une requête SQL qui me donne le résultat que je cherche à obtenir.
Je simplifie ma table au maximum pour illustrer mon problème :
Table myitems
Champs=id;mydate
1;2004-01-01 00:00:00
2;2004-02-02 00:00:00
3;0000-00-00 00:00:00
C'est une table MySQL qui contient un champ ID numérique et un champ "mydate" au format DATE mysql.
Je voudrais une requête qui me trie la table en mode DESC, mais qui afficherait les dates "nulles" (je dis "nulles" mais en fait la valeur défaut est "0000-00-00" ) en premier, c'est-à-dire comme étant considérées comme les plus récentes.
Pour reprendre l'exemple de la table ici, la requête devrait donner dans l'ordre : 3,2,1
La requête :
Code :
SELECT id,mydate FROM myitems ordre BY mydate DESC
|
me donne évidemment 2,1,3
Alors j'ai essayé de passer la date par défaut à 2038-01-19 (genre le maximum d'un timestamp 32 bits si je ne m'abuse) mais ça fout un bronx pas possible dans mon code, où je fais plusieurs tests voir si la date existe ou pas et je l'affiche en conséquence ou j'affiche un message différent s'il n'y en a pas;
J'ai essayé de rendre le champs mydate nullable (default value NULL) , NULL se comporte aussi comme une date plus ancienne.
Je suppose que je peux faire des trucs plus complexes du genre mettre tous mes résultats dans une array (style en PHP) et puis prendre ceux que je veux dans l'ordre qui me plaît, mais y aurait-il un moyen d'obtenir l'ordre que je désire (pas de date -> date plus récente -> date plus ancienne), directement depuis une commande SQL ?
Message édité par ZeBix le 17-06-2009 à 11:43:57