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

Fermé
nejmhajer Messages postés 2 Date d'inscription dimanche 14 juin 2020 Statut Membre Dernière intervention 14 juin 2020 - Modifié le 14 juin 2020 à 12:57
yg_be Messages postés 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 - 14 juin 2020 à 16:26
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

2 réponses

jee pee Messages postés 40566 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 19 décembre 2024 9 460
14 juin 2020 à 13:28
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 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 1 557
14 juin 2020 à 13:39
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 dimanche 14 juin 2020 Statut Membre Dernière intervention 14 juin 2020 > yg_be Messages postés 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024
14 juin 2020 à 14:30
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 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 1 557 > nejmhajer Messages postés 2 Date d'inscription dimanche 14 juin 2020 Statut Membre Dernière intervention 14 juin 2020
Modifié le 14 juin 2020 à 16:31
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 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 Ambassadeur 1 557
14 juin 2020 à 13:32
0