Access: Requête avec dernier enregistrement d'une table en lien avec une autre

nejmhajer Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

J'ai 2 tables:
Tab1 Liste Persnnel: Id; nom & Prénom
Tab2 Mobilité: Id; Date
Chaque Id de Tab1 peut avoir plusieurs mobilité

je veux avoir une requête qui nous donne tous les id de Tab1 et seulement l'enregistrement avec max(Date) de Tab2
A voir également:

2 réponses

jee pee Messages postés 41553 Date d'inscription   Statut Modérateur Dernière intervention   9 725
 
Bonjour,

L'idée c'est de faire un sous select comme :
select t1.nom, t1.prénom, t2.max_date from table1 as t1
join (select id, max(date) as max_date from table2 group by id) as t2
   on t1.id = t2.id

ou comme je ne connais pas le sql sous access
select t1.nom, t1.prénom, t2.max_date 
from table1 as t1, (select id, max(date) as max_date from table2 group by id) as t2
where t1.id = t2.id 

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
ceci me semble plus simple à écrire et à lire:
select t1.nom, t1.prénom, max(t2.date) as max_date
from table1 as t1, table2 as t2
where t1.id = t2.id
group by t1.nom, t1.prénom
0
nejmhajer Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
voici le code source

SLECT t1.id, t1.nom,t1.prénom,t2.date
FROM t1 LEFT JOIN t2 ON t1.[id] = t2.[id]
WHERE (((t2.[Date])=(select max(t2.[Date]) from t2 where t1.[id] = t2.[id])))


la contrainte est qu'il affiche la table 2 seulement
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > nejmhajer Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
tu as probablement plus de deux colonnes dans la table2. complete alors ton exemple.

select t2a.*
from table2 as t2a, (select id, max(date) as max_date from table2 group by id) as t2b
where t2a.id = t2b.id and t2a.date=t2b.max_date
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
0