Aller au contenu

ORDER BY Date


nino75

Sujets conseillés

Bonjour à tous,

je souhaite afficher la dernière action faite sur une anomalie, voici comment j'ai procédé:

$req=mysql_query("SELECT action_trans FROM liste_action WHERE Nano= ". $list['Nano'] . " ORDER BY DATE_FORMAT(liste_action.date_a,'%Y-%m-%d')") or die("Connexion impossible");

$d = mysql_fetch_array($ren,MYSQL_BOTH);

or ça ne fonctionne pas, car ça me donne toujours la première action et non pas la dernière, j'ai tenté de trier par 'ASC' ou 'DESC LIMIT 1' mais ça n'a rien changé.

j'ai essayé aussi avec cette requête:

$req = mysql_query("SELECT DISTINCT action_trans FROM liste_action WHERE Nano= ". $list['Nano'] . " AND date_a=(SELECT DISTINCT MAX(DATE_FORMAT(date_a,'%Y-%m-%d-')) FROM liste_action WHERE Nano= ". $list['Nano'] . ")") or die("Connexion impossible");

ça donne toujours le même résultat et sans aucune erreur.

pouvez-vous m'aider s.v.p.

ps: je précise que la date est codée sous le format varchar.

merci.

Lien vers le commentaire
Partager sur d’autres sites

Sans DESC LIMIT 1 c'est assez normal. Si tu nous donnais un exemple des lignes pour une valeur donnée de Nano et ce que tu obtiens, ça aidera probablement. Quel est exactement le format de tes dates/heures dans date_a?

Jacques.

Lien vers le commentaire
Partager sur d’autres sites

voici un exemple de ligne dans la base:

Nano Resp_ac Date_a Type_ac ac inter trans Action-tras Date_s Heure

4 AToto 26/03/2010 A distan Appel Client 26/03/2010 00:00:00

4 AToto 27/03/2010 A distan Control Jean Atoto Control 29/03/2010 00:00:00

4 AToto 02/03/2010 A distan Integre Jean Ajean Fait 26/03/2010 00:00:00

4 AToto 26/04/2009 A distan Le point Jean Anino 26/03/2010 00:00:00

AToto 12/07/2010 A distan Reconstruire Jean Le point 26/03/2010 00:00:00

lorsque j'exécute ma requête, c'est l'action_trans "Fait" qui s'affiche et non pas "Le point".

merci encore pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

le tableau ne s'affiche, je vais essayer de détailler mon exemple.

sur ma base j'ai plusieurs colonnes, celles qui m'intéressent pour cet exemple est date_a avec des valeurs sous cette forme 22/04/2009, l'autre colonne est "action_trans" qui peut avoir des cases vides ou des string comme "controle les donnees", mon souci est que je n'arrive pas à afficher la case correspondant à la dernière date sur tous les Numéro d'anomalie.

pour voir si ça fonctionne bien j'ai essayé d'afficher juste la dernière date en fonction d'un numéro d'anomalie, voici la requête:

$ren=mysql_query("SELECT date_a FROM liste_action WHERE Nano= ". $list['Nano'] . " ORDER BY DATE_FORMAT(date_a,'%Y%m%d') DESC LIMIT 1") or

die("Connexion impossible");

$dn = mysql_fetch_array($ren,MYSQL_BOTH);

print_r($dn);

il m'affiche la première date.

merci.

Lien vers le commentaire
Partager sur d’autres sites

C'est assez normal, tu passes à date_format une date à une format qu'il ne comprend pas. Il faut que la date soit au format annee-mois-jour. Bref, il te faut utiliser str_to_date (http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_str-to-date) pour convertir cette date à un format qu'il comprend.

Jacques.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...