SQL : Date Maxi avec condition sur date

Signaler
Messages postés
166
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
16 février 2011
-
Messages postés
14669
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
5 juin 2020
-
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

Messages postés
14669
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
5 juin 2020
143
Bonjour,

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

Mon site
Messages postés
166
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
16 février 2011

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"
Messages postés
14669
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
5 juin 2020
143
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
Messages postés
166
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
16 février 2011

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
Messages postés
14669
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
5 juin 2020
143
Bonjour,

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

Mon site
Messages postés
166
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
16 février 2011

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....
Messages postés
166
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
16 février 2011

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....
Messages postés
14669
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
5 juin 2020
143
Bonjour,

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

Mon site