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 :

recuperation de plusieur valeur max


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2024
    Messages : 16
    Par défaut recuperation de plusieur valeur max
    Bonjour
    je rencontre une difficulté dans Access pour récupérer dans une requête ou une table, la somme des X plus grande valeur pour chacun de mes joueurs.

    Pour le contexte, chaque semaine le mardi des vacances scolaire je joue au bowling avec une vingtaine de personnes.
    Chaque semaine il y a un classement individuel.
    j'ai réussi a attribuer une valeur de point en fonction du classement (de 10 a 1 pour les 10 premier jours et 1 point pour les autres joueurs).
    ces résultats sont ajouté a une table qui regroupe tous les matchs.

    j'arrive à additionner la totalité des points de chaque joueurs mais le problème s'est que nous gardons seulement 2/3 des résultat et donc les meilleurs.
    En fin d'année, nous seront cette année à 6 journée et nous ne garderons que les 4 meilleures journées.
    Comment ne prendre que les 6 meilleurs résultats.
    Sachant que l'an prochain nous seront a 8 journées.


    j'ai essayé avec Select Top 4 mais cela ne fonctionne pas.
    j'arrive a lister les joueur dans l'ordre avec leur point gagnés mais je n'arrive pas a bloquer seulement au max les 4 meilleures
    Nom : Capture d’écran 2025-04-11 161533.jpg
Affichages : 225
Taille : 45,1 Ko Nom : Capture d’écran 2025-04-11 161551.jpg
Affichages : 214
Taille : 42,4 Ko
    certain n'ont pas joué les toute les journées et ne seront pas classés et peuvent ne pas être affichés mais si il le sont ce n'est pas plus mal.
    il faut conserver les doublon dans le 4 meilleures journée
    j'ai essayé avec chat-gpt mais j'ai toujours un problème avec la 5 et surement les 6 7 et 8 quand elle seront présentent et si elle sont identiques
    mais si la 4-5-6-7-8 sont identiques, il faut garde que la 4eme dans ce cas précis ( dans une règle générale, le 2/3 des journées jouées
    j'ai aussi demandé la somme des point de chaque journée conservées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SELECT 
        R.nomjoueur,
        SUM(R.points) AS total_points,
        SUM(R.nblignes) AS SommeDenblignes
    FROM resultats_vacances AS R
    WHERE R.NUM IN (
        SELECT R2.NUM
        FROM resultats_vacances AS R2
        WHERE R2.nomjoueur = R.nomjoueur
        AND R2.points IN (
            SELECT TOP 4 R4.points
            FROM resultats_vacances AS R4
            WHERE R4.nomjoueur = R2.nomjoueur
            ORDER BY R4.points DESC
        )
    )
    GROUP BY R.nomjoueur
    ORDER BY SUM(R.points) DESC;

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 446
    Par défaut
    Bonjour,

    Un petit exemple en attaché, utilisant cette requête pour lister les 4 meilleurs résultats:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT T1.Joueur, T1.Points
    FROM tResultats AS T1
    WHERE ((((SELECT COUNT(*)
        FROM tResultats AS T2
        WHERE T2.Joueur = T1.Joueur AND (T2.Points > T1.Points OR (T2.Points = T1.Points AND T2.Partie <= T1.Partie))
    ))<=4))
    ORDER BY T1.Joueur, T1.Points DESC;
    (partie= n° de la partie jouée - indispensable dans la requête pour conserver les 4 résultats même si certains sont identiques)
    Fichiers attachés Fichiers attachés

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2024
    Messages : 16
    Par défaut
    Bonsoir merci pour ton aide.
    après adaptation a mon cas cela fonctionne parfaitement.


    j'ai une petite question supplémentaire.
    Dans mon cas ce n'est pas le nombre de partie mais le nombre de journées qui est pris en compte avec ton script.
    Ton script SQL fonctionne parfaitement avec adaptation.
    cependant, j'aimerais automatiser le nombre de journée au 2/3 des journées jouées
    J'ai dans ma base Access, un compteur de partie multiple de 3 car il y a 3 parties par journées.
    peut on s'en servir ou y a t il un autre moyen
    sachant que le nombre de journées définie n'est pas forcement le nombre max de partie jouées
    si une journée était annulée

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 446
    Par défaut
    Désolé, mais je ne comprends pas la demande.

    Par ailleurs, dans la mesure où le classement se fait sur la base des 4 (à 6) meilleurs résultats, en quoi ne prendre que 2/3 des journées aura-t-il de l'influence sur ce classement: le 1/3 rejeté étant la mauvaise part cela ne change rien aux 4 meilleurs résultats ... ou alors cela montre bien que je n'ai rien compris de la demande!

    Que se passe-t-il si un joueur ne participe qu'à 2 parties au cours d'une journée?

  5. #5
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2024
    Messages : 16
    Par défaut
    Bonjour
    merci pour le retour.
    Désolé, mais je ne comprends pas la demande.

    Par ailleurs, dans la mesure où le classement se fait sur la base des 4 (à 6) meilleurs résultats, en quoi ne prendre que 2/3 des journées aura-t-il de l'influence sur ce classement: le 1/3 rejeté étant la mauvaise part cela ne change rien aux 4 meilleurs résultats ... ou alors cela montre bien que je n'ai rien compris de la demande!
    le nombre de 4 journée conservées correspond au 2/3 des 6 journées jouées cette année.
    l'an prochain, peut être que nous jouerons les 8 journée des 4 périodes de petites vacances scolaire. (4 fois 2 semaines de vacances) les joueurs seront donc classés sur leur 5 meilleures journées.

    il est peut être plus simple d'avoir un champ dans mon formulaire principal qui contiendrait le nombre de semaines conservées et ce nombre serait repris dans le script précédemment fournis.
    je ne sais pas comment récupérer la valeur d'un champ dans un formulaire.

    si le joueur n'a pas participé au moins au 2/3 de la saison de vacances, il n'est pas récompensé mais figure au classement.


    Que se passe-t-il si un joueur ne participe qu'à 2 parties au cours d'une journée?
    Le joueur est dans le bas du classement et n'obtiendra qu'un seul point pour sa participation.
    Ou nous pourrions éventuellement lui attribuer sa moyenne en 3eme partie (ou un score aveugle calculé a l'avance en fonction de sa moyenne)
    A ma connaissance, cela n'est pas encore arrivé.

  6. #6
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 446
    Par défaut
    Prenons le cas des 6 journées.

    Le joueur AAA n'est venu que 3 jours, il est exclu du classement.

    Le joueur BBB n'est venu que 4 jours, il a joué 12 parties (4 x 3) et ces 4 jours il a été le meilleur pour 1 partie de la journée et dernier pour les 2 autres parties de la journée. Comment choisit-on les 4 meilleurs résultats parmi ces 12?

    Le joueur CCC est venu les 6 jours, il a joué 18 parties (6 x 3) et ces 6 jours il a été le meilleur pour 1 partie de la journée et dernier ou avant-dernier pour les 2 autres parties de la journée. Comment choisit-on les 4 meilleurs résultats parmi ces 18?

  7. #7
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2024
    Messages : 16
    Par défaut
    Les classements se font sur les somme des 3 parties pour chaque joueur chaque journée
    Il n'y a donc qu'un résultat (somme des 3 parties) pris en compte par joueurs pour le classement
    et pour être précis a fond, chaque joueur a un handicap par rapport a sa moyenne de toute les parties déjà jouées les journées précédentes.
    On additionne P1+Hdcp+ P2+Hdcp+P3+Hdcp pour avoir la valeur sur laquelle on fait le classement

  8. #8
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 446
    Par défaut
    Donc si le gagnant d'une partie a 10 points, le 2e a 9 points, etc. alors celui qui ayant joué 3 parties au cours de la même journée:
    - a gagné 3 fois reçoit au final pour la journée 30 points,
    - a été 2e les 3 fois reçoit au final pour la journée 27 points
    - a été 3e les 3 fois reçoit au final pour la journée 24 points,
    mais pour le classement on recalcule et
    - le 1er du jour reçoit 10 pour ce jour,
    - le 2e du jour reçoit 9 pour ce jour,
    - le 3e du jour reçoit 8 pour ce jour,
    et comme ce meilleur est sans cesse le meilleur et le 2e est sans cesse le 2e et le 3e est sans cesse le 3e, ils ont des handicaps qui font que finalement ils sont tous les 3 à égalité.

  9. #9
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2024
    Messages : 16
    Par défaut
    Le joueur A fait 3 parties 150 160 170 hdcp 34 total 480 + 102 soitt 582

    Joueur B 3 parties 166 170 174 hdcp 25 total 510 + 75 soit 585

    Joueur C 3 parties 120 130 140 hdcp 50 total 390 + 150 soit 540

    Classement : 1er B 2eme A 3eme C
    Distribution des points gagnés : B 10 A 9 C 8 toute les journées sont classées comme cela.
    On additionne donc les point gagnés a chaques journée pour le classement final.

  10. #10
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 446
    Par défaut
    Une proposition pour le classement final, cela en considérant que les résultats de chacun des joueurs pour les différents jours a été établi.
    Fichiers attachés Fichiers attachés

  11. #11
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2024
    Messages : 16
    Par défaut
    Merci beaucoup.

    J'ai adapté à mon envie et mon besoin.
    Cependant, je n'arrive pas a rendre la zone de texte pout le TOP N modifiable.

    PS: La base Access de base avait déjà 90% de mon besoin existant.
    Je n'ai pas créer la base moi même de font en comble.
    J'ai repris un existant
    D'où mon ignorance sur certains points.

  12. #12
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 446
    Par défaut
    Bizarre. Dans TopJeux2 on peut changer comme on veut la valeur de la dernière zone de texte (NbTop), cela avant de cliquer sur le bouton "Classement". La propriété "Verrouillé" est "Non" pour les zones de texte NbMin et NbTop, et est "Oui" pour les autres zones de texte.

  13. #13
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2024
    Messages : 16
    Par défaut
    Dans un formulaire supplémentaire que j'ai créé, je peux avoir un champ texte modifiable mais pas sur mon menu principal.
    Ce menu (formulaire) était déjà existant et je peux ajouter supprimer les éléments mais impossible de permettre la modification du champ texte
    ci joint, un export de mon menu
    Database1.zip
    le champ que je veux rendre modifiable est : Nombre de journées minimum pour être classé

  14. #14
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 446
    Par défaut
    Il faut qu'au niveau du formulaire la propriété "Modif autorisée" soit mise à "Oui".

  15. #15
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2024
    Messages : 16
    Par défaut
    Bonjour
    merci pour la precision
    je n'avais pas vu cela

  16. #16
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2024
    Messages : 16
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Un petit exemple en attaché, utilisant cette requête pour lister les 4 meilleurs résultats:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT T1.Joueur, T1.Points
    FROM tResultats AS T1
    WHERE ((((SELECT COUNT(*)
        FROM tResultats AS T2
        WHERE T2.Joueur = T1.Joueur AND (T2.Points > T1.Points OR (T2.Points = T1.Points AND T2.Partie <= T1.Partie))
    ))<=4))
    ORDER BY T1.Joueur, T1.Points DESC;
    (partie= n° de la partie jouée - indispensable dans la requête pour conserver les 4 résultats même si certains sont identiques)
    Bonsoir

    j'ai un petit problème.
    j'ai modifier la requête en changeant "))<=4))" en "))<=6))"
    Lorsque j'affiche le résultat de cette requête, certain résultat ne sont pas pris en compte.
    Un joueur qui 8 parties a 1 point n'est pas pris en compte. alors que nous devrions avoir 6 fois 1 point affiché.
    exemple pour FIFI
    Nom : Capture d'écran 2025-08-14 221857.png
Affichages : 64
Taille : 14,1 Ko
    Des joueurs qui ont 8 parties dont les plus faible sont identiques, la requête n'affiche pas les parties identique les plus faibles
    Exemple pour LORENZO ou pour ISA
    Nom : Capture d'écran 2025-08-14 222023.png
Affichages : 63
Taille : 15,9 KoNom : Capture d'écran 2025-08-14 222354.png
Affichages : 62
Taille : 13,7 Ko
    un autre exemple pour le joueur VLADIMIR/JOJO
    il a 7 parties , qui ont des points différents et dans son cas, les 6 meilleurs sont sélectionnées.
    Nom : Capture d'écran 2025-08-14 223049.png
Affichages : 64
Taille : 25,2 Ko
    dans tous les cas, les doublons de hautes valeurs, sont toujours conservés.

    ps: je ne pense pas que de passer du 4 au 6 soit le problème car cette valeur ne permet que de limiter le nombre de valeur conservées et non leur contenu.
    Images attachées Images attachées   

  17. #17
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2024
    Messages : 16
    Par défaut
    en fait je viens de comprendre mon erreur.

    je ne sélectionnait par le bon champ pour la remarque : "(partie= n° de la partie jouée - indispensable dans la requête pour conserver les 4 résultats même si certains sont identiques)"

    veuillez m'excuser si vous avez travaillé sur mon cas.

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

Discussions similaires

  1. récupération de plusieurs valeur sous jquery
    Par aymen8219 dans le forum jQuery
    Réponses: 2
    Dernier message: 20/12/2011, 15h09
  2. recuperation de plusieurs valeurs
    Par aymando dans le forum VB.NET
    Réponses: 4
    Dernier message: 15/04/2011, 15h22
  3. Réponses: 1
    Dernier message: 11/06/2010, 13h14
  4. Trouver plusieurs valeur max en fonction de parametre
    Par mennix dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/11/2007, 18h59
  5. Réponses: 3
    Dernier message: 30/05/2007, 20h27

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