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

PHP & Base de données Discussion :

Utilisé SUM sans compter les doublons


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut Utilisé SUM sans compter les doublons
    bonjour,
    JE vous explique d'abord la structure de ma table qui sert à enregistrer les partie d'un loto.
    je simplifie au plus juste :
    loto_parties : idpartie | idmembre | numero | gains
    L'idpartie est l'ensemble des numeros joués par le membre, exemple 44-34-45-34.
    idmembre, c'est l'id du membre qui joue tout simplement.
    numero contient le numero choisi, il y a autant d'enregistrement que de numero. pour un loto à 7 chiffres il y aura 7 enregistrements identique à l'exception de la colone numero.

    et gains est modifié par la suite lorsque le tirage à eu lieux, il est rempli identiquement pour chaque enregistrement de la partie.

    Pourquoi faire autant d'entré que de numero? simplement pour conter par la suite le nombre de numero trouver en fonction du tirage dans une requète sql.

    Tout cela fonctionne.

    Par contre, maintenant j'aimerai affiché lorsque je regarde la fiche d'un membre le nombre total de points qu'il à gagné en jouant à la loterie, mais lorsque je fait un SUM, étant donné qu'il y a par exemple 7 enregistremen tidentique, avec les même gains, il les additionne, alors qu'en fait il ne faut pas.

    Pourriez vous m'aider?

    Merci beaucoup.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu devrais avoir au moins 4 tables afin que tes données ne soient pas redondantes :

    Tes parties :
    idpartie | numero_joues

    auto | 44-34-45-34

    Tes participants :
    idparticipant | idmembre | idpartie

    auto | michel | 45678

    Les tirages des joueurs
    idtirage | idparticipant | numero

    auto | 98765 | 32
    auto | 98765 | 45

    Les gains
    idgain | idparticipant | gain

    auto | 98765 | 156454654

    Tous les gains de michel sont
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT SUM(gain) FROM t_gain
     JOIN t_participant USING (idparticipant) 
     WHERE  idmembre  = michel

  3. #3
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    je vois ce que tu veux dire.
    mais le script étant déja en production, je n'ai pas envie de modifier toutes la structure.
    Il n'y à pas moyen de le faire avec ma structure?

    j'ai essayé avec group by mais il fait quand même la somme des elements groupés

    Est ce qu'il est possible de faire un select avec un distinct sur une seule colonne et non pas sur l'enselbme de la ligne?

Discussions similaires

  1. [DeskI V5-V6] Compter les doublons dans un tableau
    Par limouzin dans le forum Débuter
    Réponses: 4
    Dernier message: 25/02/2009, 13h34
  2. Réponses: 0
    Dernier message: 10/06/2008, 16h57
  3. Intervalle Date Sans Compter Les Week Ends
    Par datamind dans le forum Oracle
    Réponses: 6
    Dernier message: 05/05/2006, 18h14
  4. Comment compter les doublons d'une colonne?
    Par Dnx dans le forum Langage SQL
    Réponses: 8
    Dernier message: 07/11/2005, 10h50

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