Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/02/2011, 17h48   #1
Invité de passage
 
Inscription : février 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 10
Points : 1
Points : 1
Par défaut Requete SQL Max

Bonjour.

J'ai une table T_Out et une table T_Histo.
La table T_Out a pour clef primaire IDOutil, qui fait le lien avec la clef étrangère IDOutil de T_Histo.
Dans la table T_Out se trouve un champ Designation.
Dans la table T_Histo un champ date, et un champ Etat.

J'arrive, avec du code SQL, à afficher pour chaque IDOutil la dernière Date seulement avec la fonction Max(). Jusque là pas de soucis.

Sauf que quand j'essaie d'inclure dans ma requete le champ Etat, qui fait partie de T_Histo, cela ne fonctionne plus : le résultat est que dès que Etat diffère pour un même IDOutil, il me l'affiche, même si la Date n'est pas la plus récente.

En gros sans le champ Etat :

BJ 001_____29/02/10_____Bridgecam Jauge

Avec :

BJ 001_____29/02/10_____Bridgecam Jauge_____Bon
BJ 001_____01/02/10_____Bridgecam Jauge_____Moyen

J'espère que vous comprendrez ce que j'ai écrit.

Merci de m'avoir lu, et éventuellement répondu.

Cordialement,
PY
b0rnt0g33k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 18h51   #2
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 410
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 410
Points : 4 439
Points : 4 439
bonsoir,

Citation:
Envoyé par b0rnt0g33k Voir le message
J'arrive, avec du code SQL, à afficher pour chaque IDOutil la dernière Date seulement avec la fonction Max(). Jusque là pas de soucis.
hé bien normalement il ne reste plus qu'à reprendre cette requête puis faire la jointure avec la table T_Histo sur les deux champs IDOutil et Date.
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 10h49   #3
Invité de passage
 
Inscription : février 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 10
Points : 1
Points : 1
A oui, une nouvelle requete. Merci beaucoup, je vais tester ceci sous peu !

Edit : dans cette nouvelle requete, j'ai repris tous les champs de la première, dont le champ MaxDeDate, et j'y ai inclus le champ Etat.

Cette fois, j'ai autant de lignes que d'Etats différents, avec en face le champ MaxDeDate rempli avec la dernière date.

Faut-il intégrer quelquechose de particulier en code SQL pour qu'il ne prenne en compte que l'Etat correspondant à la dernière date ?
b0rnt0g33k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 18h48   #4
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 410
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 410
Points : 4 439
Points : 4 439
bonjour,

Citation:
Envoyé par b0rnt0g33k
dans cette nouvelle requete, j'ai repris tous les champs de la première, dont le champ MaxDeDate, et j'y ai inclus le champ Etat.
non, pas dans la 1ère requête max.

Il faut ramener la date maxi pour chaque outil ce qui donne la requête,

R1:
Code sql :
SELECT IDOutil, Max(Datehisto) AS MaxDeDate FROM T_Histo GROUP BY IDOutil;

puis on fait la jointure de R1 avec T_histo et T_Out en ramenant les champs souhaités:
Code sql :
1
2
3
SELECT T_Out.IDOutil, T_Out.Designation, R1.MaxDeDate, T_Histo.Etat
FROM (T_histo INNER JOIN R1 ON T_histo.IDOutil=R1.IDOutil AND T_histo.Datehisto=R1.MaxDeDate)
INNER JOIN T_Out ON T_histo.IDOutil=T_Out.IDOutil

où truc approchant...
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 08h56   #5
Invité de passage
 
Inscription : février 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 10
Points : 1
Points : 1
Merci beaucoup f-leb !

(et désolé pour m'être trompé de sous-forum, je m'en suis rendu compte une fois posté :s)
b0rnt0g33k est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h40.


 
 
 
 
Partenaires

Hébergement Web