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

Requêtes et SQL. Discussion :

Problème select MAX(annee) dans une requête


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Problème select MAX(annee) dans une requête
    Bonjour,

    Voici ma table :

    COTISATION (num_cotisation, annee, cotisation, date_cotisation, num_tiers)

    Quelques exemples
    (1, 1997, 7.62, 10/12/1997, 1)
    (2, 2002, 9, 10/08/2002, 1)

    J'aimerais sélectionner uniquement la dernière cotisation de chaque tiers. Dans l'exemple, j'aimerais afficher uniquement la cotisation de 2002.

    Or lorsque je fais cette requête que j'éxécute dans un sous-état avec des champs père-fils :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Max(COTISATION.annee) AS MaxDeannee, COTISATION.num_tiers, COTISATION.cotisation, COTISATION.date_cotisation
    FROM COTISATION
    GROUP BY COTISATION.num_tiers, cotisation, date_cotisation;
    Il m'affiche toutes les années de cotisation dès lors qu'un des autres champs est différents !!! Si je n'affiche que l'année de cotisation, cela fonctionne mais dès que je met d'autres champs, ça ne fonctionne plus !!!

    Merci pour votre aide car je suis vraiment bloquée !!!
    Info, quand tu nous tiens !!!

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Bonjour

    Si tu veux la dernière, un Last serait plus approprié et sur la date pas sur l'année...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Last(date_cotisation) AS DerniereCotisation, num_tiers, cotisation
    FROM COTISATION 
    GROUP BY date_cotisation, num_tiers, cotisation;
    Non ?

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Le Last ne peut pas fonctionner dans mon cas car si la personne ne saisie pas les cotisations dans l'ordre, cela affiche la dernière cotisation saisie.

    De plus, dès que je rajoute mes autres champs dans ma reqûete, cela ne fonctionne plus.

    Si je met uniquement cela, ça fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Max(COTISATION.annee) AS MaxDeannee, COTISATION.num_tiers
    FROM COTISATION
    GROUP BY COTISATION.num_tiers;
    Mais dès que je rajoute cotisation ou date_cotisation, ça m'affiche tout !!!
    Info, quand tu nous tiens !!!

  4. #4
    Membre actif
    Avatar de MashiMaro
    Profil pro
    Inscrit en
    Février 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 180
    Points : 213
    Points
    213
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT A.annee,A.num_tiers,A.cotisation,A.date_cotisation
    FROM COTISATION AS A,
         (SELECT num_tiers AS tiers,MAX(annee) AS max_annee FROM COTISATION GROUP BY num_tiers) AS B
    WHERE A.num_tiers=B.tiers
    AND A.annee=B.max_annee
    Testé et ca marche
    MashiMaro

    L'homme sage apprend de ses erreurs, l'homme très sage apprend des erreurs des autres.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Ta requête fonctionne exactement comme je veux mais par contre, je n'arrive pas à l'intégrer dans un état.

    Il me dis ça : "Le moteur de base de données Microsoft Jet ne peut pas trouver la table ou la requête source <SELECT num_tiers AS tiers,MAX(annee) AS max_annee FROM COTISATION GROUP BY num_tiers>.Assurez-vous qu'elle existe et qu'elle est correctement orthographiée."

    Donc je ne vois pas comment faire car dans une requête simple, ça marche très bien mais dans mon état il veut pas en entendre parler !!!
    Info, quand tu nous tiens !!!

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Je pense que ça vient du fait il n'y a pas de liaison entre les 2 alias...
    Créé ta requête enregistre là et affecte le nom de la requête comme source à l'état.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Autre soucis :

    Ca me dis ça quand je lance mon état.

    "Le champ spécifié cotisation.cotisation peut désigner plusieurs tables listées dans la clause FROM de votre instruction SQL."

    Voici comment j'ai modifié ta requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COTISATION.annee, COTISATION.num_tiers, COTISATION.cotisation, COTISATION.date_cotisation
    FROM COTISATION, rq_max
    WHERE (((COTISATION.num_tiers)=[rq_max].[tiers]) AND ((COTISATION.annee)=[rq_max].[max_annee]));
    rq_max :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT num_tiers AS tiers, MAX(annee) AS max_annee
    FROM COTISATION
    GROUP BY num_tiers;
    Merci encore pour ton aide
    Info, quand tu nous tiens !!!

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Là, ça doit être bon...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT A.annee, A.num_tiers, A.cotisation, A.date_cotisation
    FROM TBgrisounette AS A INNER JOIN [SELECT num_tiers AS tiers,MAX(annee) AS max_annee FROM TBgrisounette GROUP BY num_tiers]. AS B ON A.num_tiers = B.tiers
    WHERE (((A.annee)=[B].[max_annee]) AND ((A.num_tiers)=[B].[tiers]));
    Comme je t'avais dit, il n'y a pas de INNER mais ça Access à du mal à le comprendre.
    Je ne suis pas certain, mais je pense que MashiMaro a du écrire la requête sur SQL server et pas sur Access.
    En SQL server, c'est sous entendu si tu ne le précise pas.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec l'apostrophe dans une requête
    Par mika0102 dans le forum VBA Access
    Réponses: 7
    Dernier message: 09/03/2019, 16h51
  2. Problème de maj/min dans une requête
    Par ruff15 dans le forum DB2
    Réponses: 9
    Dernier message: 11/10/2007, 21h06
  3. [MySQL] select multiple à reporter dans une requête
    Par PatBateman dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 07/03/2007, 14h05
  4. problème classement de date dans une requête
    Par heteroclite dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 15/10/2006, 15h55
  5. Problème de Order by dans une requête
    Par showa dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/08/2004, 15h40

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