Obtenir l'avant dernière donnée.

cs_Bugs_Bunny Messages postés 10 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 12 juillet 2005 - 17 avril 2005 à 16:11
cyberbenfr Messages postés 12 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 13 juillet 2005 - 12 juil. 2005 à 10:04
Bonjour,
j'essai d'extraire l'avant dernière données d'une table. Je vous donne un exemple

DateMaj Version Correction
========================
050101 1.0 Format date
050108 1.1 Trou de sécurité
050110 1.2 Nouvelle fonctionnalité

J'aimerais pouvoir à l'aide d'une requête afficher la date de la dernière mise à jour ainsi que son interval.

Exemple: select DateMaj, DerniereMaj,datediff(day,DateMaj,DerniereMaj) as interval from table

DateMaj DerniereMaj interval
===========================
050101 Null Null
050108 050101 7
050110 050108 2

Je sais comment le faire avec des curseurs dans une stored procedure mais cherche une autre alternative. Idéalement la solution utiliserait qu'une instruction 'Select'. Sinon, je suis disposé a créer une table temporaire.

Merci à l'avance.

4 réponses

cyberbenfr Messages postés 12 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 13 juillet 2005
11 juil. 2005 à 17:38
As-tu trouvé une solution ou pas ? Je cherche à faire la même chose avec une simple requête SELECT...
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
12 juil. 2005 à 00:46
Salut a vous deux

Si dessus un debut de reponse.



J'ai pas le resultat que vous attendez mais ca ce rapproche.



SELECT DISTINCT Changelog.Date,
DateDiff("d",Changelog.[Date],Changelog_1.[Date]) AS Expr1,
Changelog_1.Date, Changelog.Version, Changelog_1.Version, Changelog.N°,
Changelog_1.N°

FROM Changelog, Changelog AS Changelog_1

WHERE (((Changelog_1.N°)>[Changelog].[N°]));



J'ai mis une clé numérique pour chaque version

et ensuite j'ai fait un produit cartésien

dont j'enleve les versions identiques et antérieures.

Je gardes que les supérieures dans les tables.



Le probleme qui y a est que les versions intermédiaire apparaissent.



Version 1.0 1.1

Version 1.0 1.2

Version 1.1 1.2



Je ne trouves pas la solutions pour supprimer la ligne du milieu.

Peut en jouant avec des having et group by ca peut le faire.



Bonne continuation

Esperant avoir poussé plus loin le smilliblick ;-)
0
cs_Bugs_Bunny Messages postés 10 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 01:00
J'ai eu beau chercher, je n'ai pas trouvé. Peut-être une autre fois...

Merci quand même.
0
cyberbenfr Messages postés 12 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 13 juillet 2005
12 juil. 2005 à 10:04
J'ai une autre piste en utilisant un truc comme ca :

SELECT MIN( DATEDIFF( CURDATE(), champ_date ) ) FROM table;

Mais j'arrive pas à utiliser le min(datediff(...)) dans une clause WHERE. Mais je ne désespère pas de trouver :)

Bye
0
Rejoignez-nous