IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

PB Sélectionner le dernier enregistrement


Sujet :

Access

  1. #21
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    ça marche pas,

    je pense qu'il faille faire un truc plus compliqué avec une boucle

    Prendre le premier enregistrement n et Sélectionner les enregistrements avec la même agence, puis sélectionner la date la plus grande, mettre l'enregistrement trouver dans une table
    Puis passer à l'enregistrement n+1 si l'agence n+1 = n alors passer à n+2 sinon Sélectionner les enregistrements avec l'agence trouver puis sélectionner la date la plus grande, mettre l'enregistrement trouver dans une table.
    Puis on passe à n+3 et ainsi de suite jusqu'à la fin.

    Je maitrise pas SQL pas je devoir m'y mettre car c la seule solution pour que ça marche parce qu'il faut sélectionner la date la plus grande de chaque enregistrement avec une même agence. Et on ne peut utiliser la fonction max qu'après avoir sélectionner les enregistrements avec une même agence puis passer à la suivante

  2. #22
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 74
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Pogny
    select agence,max(date) as [derniere date]
    from table1
    group by agence ;
    ca ca marche je viens de tester sauf que ca donne pas les Numero

    Ps : remplace bien les bon noms de champs et table (car cela sont ceux de ma table)

  3. #23
    Expert éminent sénior
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Slt,

    C'est l'éternel question avec les Group By...

    Dans ton cas :
    1 Montesquieu 11/02/06
    2 Montesquieu 16/03/06
    3 Monstesquieu 02/06/06
    1 Izon 24/02/06
    2 Izon 01/06/06
    1 Gambetta 15/02/06
    2 Gambetta 21/03/06
    3 Gambetta 10/05/06

    C'est simple mais c'est un cas particulier, ton numéro n'a pas de doublons et ton opération ne concerne qu'une seule ligne :

    Si tu avais :
    1 Montesquieu 11/02/06
    3 Montesquieu 16/03/06
    3 Monstesquieu 02/06/06

    Le Max(Num) est 3 et correspond à deux dates, impossible donc de rajouter la date, Access ne saurait pas laquelle choisir.
    Encore plus parlant si tu cherches par exemple le Num Maximum et le Num Minimum.
    Code exemple faux : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Max(Num),Min(Num),Date from LaTable Group By agence
    On voit bien ici qu'il manque quelque chose, quelle Date prend on?
    Celle qui correspond au mini ou au maxi?

    D'où l'erreur qui dit que la Date ne fait pas partie de la fonction d'agrégat.
    (Même s'il n'y a logiquement qu'une date possible dans ce cas particulier)

    Donc il faut décomposer :
    - 1ère requête nommée RqAgenceMax pour trouver les Num maxi
    Code Requête RqAgenceMax : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Max(Num) as NumMax,agence from LaTable Group By agence
    - 2ème requête avec une jointure pour trouver la date correspondante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select RqAgenceMax.NumMax,RqAgenceMax.agence,LaTable.date
    from RqAgenceMax Left Join LaTable 
    on RqAgenceMax.NumMax = LaTable.num and RqAgenceMax.agence = LaTable.agence
    (tu peux aussi mettre la première requête en tant que requête imbriquée dans la deuxième)

    (J'ai tapé ça à la volée, ce n'est pas testée...)

  4. #24
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Oui je viens de tester effectivement ça marche.
    Pogny je te remercie de t'être appesanti sur mon cas.

    J'aurais eu le mérite de soulever le problème des GROUP BY.

    Arkham j'essaierai ta solution lundi. J'ai un champ calculé que absolument besoin d'afficher dans ma requête.

    Bon week end les loulous

Discussions similaires

  1. [MySQL] Sélectionner le dernier enregistrement de ma table
    Par the_tiger85 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 08/01/2013, 12h02
  2. [SQL] Sélectionner les 5 derniers enregistrements
    Par lunick dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/09/2007, 15h40
  3. sélectionner le dernier élément enregistré par client
    Par sorlok dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/05/2007, 14h58
  4. [MySQL] sélectionner le dernier enregistrement d'une BD
    Par budylove dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 27/04/2006, 15h10
  5. Sélectionner les 10 derniers enregistrements
    Par pod1978 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/11/2005, 13h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo