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 :

Selection de n plus grandes valeurs avec 2 champs [AC-2010]


Sujet :

Requêtes et SQL.

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Selection de n plus grandes valeurs avec 2 champs
    Bonjour à tous,
    Je rencontre un petit souci de création de requête, peut être pourrez vous m'éclaircir !
    Voici le contexte :
    J'ai une table dans laquelle j'ai un champ "ID", numéro auto (la clé), un champ "Nom", et un champ "score"
    Un nom peut avoir plusieurs scores

    Je souhaiterai dans une requête sélectionner les 4 plus grands scores de chaque nom.
    J'ai bien pensé à TOP 4 mais dans ce cas, je sélectionne les 4 plus grand scores de la table, pas vraiment ce que je cherche à faire !

    Auriez vous des pistes, solutions ? Peut être est-ce simple ?

    D'avance merci beaucoup !!

    Beno

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Voici ce que je te suggère : sélectionner tous les enregistrements qui sont précédés par au plus 3 autres scores supérieurs pour une même personne.

    Ça donne un truc du genre :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select [taTable].*, DCount("Id", "TaTable", "[Nom]="""  & [TaTable].[Nom] & """ and [ID]<=" & [taTable].[Id] & " and [Score]>=" & [TaTable].[Score]) as Rang from [TaTable]
    where DCount("Id", "TaTable", "[Nom]="""  & [TaTable].[Nom] & """ and [ID]<=" & [taTable].[Id] & " and [Score]>=" & [TaTable].[Score]) <=4

    Cela suppose que tu n'as pas 2 personnes qui portent le même nom. Si c'est le cas il faudrait avoir un numéro personne au lieu du nom.
    Le DCount("Id", "TaTable", "[Nom]=""" & [TaTable].[Nom] & """ and [ID]<=" & [taTable].[Id] & " and [Score]>=" & [TaTable].[Score]) sert à trouver le "rang" de l'enregistrement.
    Le test sur ID permet de distinguer les scores égaux.
    Le champ [Rang] n'est pas indispensable mais il est pratique pour voir le résultat du DCount() et valider que le calcul est correct.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pour la réponse.
    j'ai un peu modifié le code car avec [ID]<=" & [taTable].[Id] & " ça ne fonctionnait pas.

    j'ai donc fait ca :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT R_Scores_bruts_licenciés.*, DCount("[ID_participation]","R_Scores_bruts_licenciés","[Nom]=""" & [R_Scores_bruts_licenciés].[Nom] & """ and [score brut parcours]>=" & [R_Scores_bruts_licenciés].[score brut parcours]) AS Rang
    FROM R_Scores_bruts_licenciés
    WHERE (((DCount("[ID_participation]","R_Scores_bruts_licenciés","[Nom]=""" & [R_Scores_bruts_licenciés].[Nom] & """ and [score brut parcours]>=" & [R_Scores_bruts_licenciés].[score brut parcours]))<=4));
    (désolé, je ne sais pas intégrer le code comme tu l'as fais)
    et ça fonctionne !!

    Merci encore

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Si la discussion est finie, pense à appuyer sur le bouton en bas.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/03/2015, 20h14
  2. Récupérer les plus grandes valeurs avec group by
    Par mysticpete dans le forum Doctrine2
    Réponses: 2
    Dernier message: 24/04/2013, 15h09
  3. La moyenne des plus grandes valeurs d'un champ
    Par aiss57 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 20/06/2009, 11h56
  4. [SQL SELECT] Chercher la plus grande valeur?
    Par zoltix dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/03/2007, 09h15
  5. VBA_E : Selection des 5 plus grandes valeurs d'une colonne..
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/09/2006, 17h39

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