SQL : Date Maxi avec condition sur date

thonyboy Messages postés 165 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 16 février 2011 - 24 janv. 2011 à 13:02
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 24 janv. 2011 à 20:08
Bonjour a tous

Je galère à faire une requette sur une base Access !

J'ai deux tables structurées de la sorte (avec une relation sur le champ ID)

Table1 : id, nom
Table2 : id, datehis


Supposons qu'a l'interieur de la table1 j'ai :

1,"Mathie"
2,"Alain"
3,"Paul"

et pour la table2 les données suivantes :

1,"01/01/2011"
1,"03/01/2011"
1,"07/01/2011"
1,"08/01/2011"
2,"01/01/2011"
2,"11/01/2011"
3,"01/01/2011"
3,"05/01/2011"
3,"06/01/2011"
3,"07/01/2011"
3,"10/01/2011"

Je voudrais obtenir la liste des enregistrements avec la date la plus prés possible (<=) d'une date passée en parametre.
Ex : Si le parametre de ma condition vaut "05/10/2010" je souhaite obtenir :


1,"03/01/2011"
2,"01/01/2011"
3,"05/01/2011"




ET JE N'Y ARRIVE PAS !!!

Donc si un Dieu ou un Maître du SQL passe par ici et accepterait de me donner une solution. Ce serait cool.

D'avance merci

8 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
24 janv. 2011 à 13:55
Bonjour,

SELECT * FROM Table WHERE Date<=#10/05/2010#
pour le 5 janvier (mm/dd/yyyy).
Il me semble.

Mon site
0
thonyboy Messages postés 165 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 16 février 2011
24 janv. 2011 à 14:06
Merci mais non. Si je fait cela j'obtiens trop d'enregistrements.
Le résultat sera celui la

1,"01/01/2011"
1,"03/01/2011"
2,"01/01/2011"
3,"01/01/2011"
3,"05/01/2011"



Sinon j'ai fait 2 fautes dans la rédaction de ma question

1/ pour la condition il falait lire 05/01/2011 (et non pas 05/10/2010)

2/ Je souhaite obtenir (pas l'ID mais le nom)
"Mathie","03/01/2011"
"Alain","01/01/2011"
"Paul","05/01/2011"
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
24 janv. 2011 à 14:18
Bonjour,

SELECT TOP 3 nom, datehis FROM Table2 INNER JOIN Table1 ON Table1.id=Table2.id WHERE datehis<=#01/05/2011# ORDER BY datehis DESC

pas testé, à toi de vors les mots clés (majuscules) utilisés.

Mon site
0
thonyboy Messages postés 165 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 16 février 2011
24 janv. 2011 à 14:40
Heu ? "Top 3" parceque j'ai dans mon exemple 3 personnes ?

Ce n'était qu'un exemple pour simplifier car dans ma vrai base je dois en avoir des milliers
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
24 janv. 2011 à 19:14
Bonjour,

J'ai mis "Top 3", mais tu peux le retirer ou le modifier, si tu veux.

Mon site
0
thonyboy Messages postés 165 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 16 février 2011
24 janv. 2011 à 19:40
Mais mon nombre d'enregistrement est variable d'un jour a l'autre !
Je ne suis pas certain que ce soit la bonne méthode....
0
thonyboy Messages postés 165 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 16 février 2011
24 janv. 2011 à 19:40
Mais mon nombre d'enregistrement est variable d'un jour a l'autre !
Je ne suis pas certain que ce soit la bonne méthode....
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
24 janv. 2011 à 20:08
Bonjour,

Alots, tu ne prend que les x premiers enregistrements quand tu relis le résultat.

Mon site
0
Rejoignez-nous