Distinct ou ?

Résolu
dan91 -  
nathan974 Messages postés 40 Statut Membre -
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. nathan974 Messages postés 40 Statut Membre 43
     
    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 ;-)

    0
  2. dan91
     
    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.
    0
  3. nathan974 Messages postés 40 Statut Membre 43
     
    T'as trouvé une solution encore plus simple que la mienne :D !

    De rien, bon courage à toi
    0