Distinct ou ?

Résolu
Bonjour,

J'ai une table SQL qui contient : annee,no_lot,nom et j'ai mis un index sur (annee,no_lot).
Dans cette table je peux avoir pour un même no_lot des années différentes. Je voudrais récupérer pour chaque lot, la ligne du lot ayant la l'année la plus élevée et les données associées (nom..). J'ai essayé SELECT DISTINCT(no_lot) avec ORDER BY sur annnee. SQL me sort bien le nombre de ligne que j'attendais mais lorsque j'ajoute les autres données (SELECT DISTINCT(no_lot),annee,nom ... SQL m'affiche tout...

Pouvez m'aider.

Merci

3 réponses

  1. T'as trouvé une solution encore plus simple que la mienne :D !

    De rien, bon courage à toi
    1. Bonjour Nathan,

      Merci de ta réponse. Effectivement tu as raison. Voila ce que j'ai passé et cela m'a résolu le pb :

      SELECT no_lot, annee, nom FROM 'clm_t_coprop' u WHERE
      annee = (select max(annee) from 'clm_t_coprop' where no_lot = u.no_lot)
      order by no_lot asc ;

      A bientôt et merci encore de ton support.
      1. Bonjour,

        C'est normal que ta requête ne fonctionne pas, elle doit être un peu plus complexe que ça.

        Essai :

        SELECT t1. *
        FROM nom_table t1
        INNER JOIN (
        SELECT no_lot, MAX( annee ) AS MaxAnnee
        FROM nom_table
        GROUP BY no_lot
        )
        groupedtt
        ON t1.no_lot = groupedtt.no_lot
        AND t.annee = groupedtt.MaxAnnee

        En gros tu doit coupler ta table entière avec uniquement les lignes avec l'année max regrouper par no_lot. N'oublie pas de remplacer nom_table par le nom de ta table ;-)