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

nejmhajer Messages postés 2 Statut Membre -  
yg_be Messages postés 23437 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

2 réponses

  1. jee pee Messages postés 31966 Date d'inscription   Statut Modérateur Dernière intervention   10 010
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
      1. nejmhajer Messages postés 2 Statut Membre > yg_be Messages postés 23437 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
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > nejmhajer Messages postés 2 Statut Membre
         
        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