Bonjour,
j'ai deux enregistrements identiques (sauf ID bien sur) et je voudrais récupérer grâce à une ordre SELECT, celui qui a la date/heure la plus ancienne (grande).
Merci d'avance
Version imprimable
Bonjour,
j'ai deux enregistrements identiques (sauf ID bien sur) et je voudrais récupérer grâce à une ordre SELECT, celui qui a la date/heure la plus ancienne (grande).
Merci d'avance
Code:
1
2 SELECT * FROM TaTable WHERE DATE = (SELECT MAX(DATE) FROM TATABLE)
Mais oui, une sous-requête, pourquoi n'ai je pas pensé à ça avant ? :D
Un grand merci ;)
mets la balise résolu si c'est ok merci
Bonjour,
L'ancienne solution fonctionne très bien lorsque qu'on veut récupérer le plus ancien élément d'une table, or ma table comporte des doublons (sauf ID) et je veut récupérer parmis ces doublons celui qui a la date la plus anciennes.
exemple :
1 DUPOND Joël 04/09/2006 17:18:00
2 DUPOND Joël 04/09/2006 17:19:00
3 DURAND Bertrand 04/09/2006 17:18:00
4 DURAND Bertrand 04/09/2006 17:19:00
Dans cet exemple il me faudra récupérer les enregistrements 2 et 4.
J'ai essayé avec cette requête mais cela ne fonctionne pas, si cela est possible merci de m'aider :
Merci d'avance :mrgreen:Code:
1
2
3 SELECT * FROM TBClient WHERE Nom IN (SELECT DISTINCT Nom FROM TBClient) AND DateUpdate = (SELECT MAX(DateUpdate) FROM TBClient)
Code:
1
2
3
4
5
6
7
8 SELECT TB.* FROM TBClient TB, (SELECT Nom FROM TBClient, MAX(DateUpdate) AS MAXDT FROM TBClient group by Nom) SS where TB.NOM = SS.NOM AND TB.DateUpdate = SS.MAXDT
Salut,
je teste ça demain (car je ne suis plus au boulot) et je le met en résolu si c'est le cas.
Merci ;)
J'ai essayé ta requête, elle a l'air interessante :mrgreen:
Mais une erreur me sort quand je l'exécute :
Si tu as une idée ? Je suis preneur ;)Code:'DateUpdate' n'est pas une option OPTIMIZER LOCK HINTS reconnue.
jamais vu cette erreur. 8O
Tu es sur qu'elle est dsans le morceau de code que je t'ai envoyé ?
Essaie de mettre DateUpdate entre [] pour voir, mais encore une fois je connais pas ton erreur. Une recherche sur google s'impose ;)
Re,
J'ai modifié un peu ta requête, et cela fonctionne parfaitement, enfin je dois encore tester dans mon environnement, mais la requête en elle même fonctionne.
Voici la requête :
J'ai rajouté une clause qui me permet de récupérer les enregistrements du jour avec :Code:
1
2
3
4
5
6 SELECT TB.* FROM TBClient TB, (SELECT TBClient.Nom, MAX(DateUpdate) AS MAXDT FROM TBClient GROUP BY TBClient.Nom) SS WHERE TB.Nom = SS.Nom AND Datename(Day, TB.DateUpdate) = Datename(Day, getDate()) AND TB.DateUpdate = SS.MAXDT
En ce qui concerne l'erreur d'avant, jamais vu aussi, de toute manière l'informatique nous réserve toujours de trés belle surprise :mrgreen:Code:AND Datename(Day, TB.DateUpdate) = Datename(Day, getDate())
Merci pour tout et je te tiens au courant de la suite ;)
C'est bon tout fonctionne correctement.
Merci à tous ;)
Bonjour, je ne comprend pas. J'ai repris un exemple de requête :
Et l'analyseur de requête me renvoit : erreur de synthaxe :?Citation:
SELECT * FROM <Matable> AS A1
WHERE A1.<monchampdate> = (SELECT MAX(<monAutrechampdate>) FROM
<nomServeur>.<ma base 2>.dbo.<matable2> ) ;
Je précise ce que je veux faire :
Je veux sélectionner dans une table qui provient d'access, les lignes dont un champ date est supérieur à une certaine date reférence.
Cette date référence est la date la plus récente enregistrée dans une table se trouvant dans SQL Server 2005.
L'objectif est d'alimenter par ajout successif la base SQL à partir de la base Access...