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 :

Somme des éléments d'une table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut Somme des éléments d'une table
    Salut ,tous le monde
    j'ai une table (livret-scolaire)qui contient plusieurs champs de type float ,
    je souhaite compter la somme de ces champs,
    quelqu'un peut me montrer la requête qui convient,
    Merci

  2. #2
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Bonjour,
    La seomme de toutes les notes de la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT sum(notes) FROM livret;
    La somme des notes d'un élève :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT sum(notes) FROM livret WHERE eleve='Pierre';
    La somme des notes par élève :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT eleve, sum(notes) FROM livret GROUP BY eleve;
    Z.

  3. #3
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 474
    Points : 4 684
    Points
    4 684
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select sum(ta-colonne1) as total1, sum(ta-colonne2) as total2 from livret-scolaire
    non ?

    edit : a zut, plus rapide =)

  4. #4
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    Est ce que je peux mettre ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT sum(*) FROM livret;
    parce que j'ai pleins de notes????

  5. #5
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    non, il te faudra explicitement rentrer tes champs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT sum(francais + anglais + histoire) FROM livret;

  6. #6
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    ok ...thx for every body Zwiter And Doksuri

  7. #7
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    re;
    Je trouve un problème............comment récupérer les données de la requête de la somme
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    $somme=mysql_query("SELECT sum(alphabet1 + alphabet2 + alphabet3 ) FROM livret_scolaire  WHERE pseudo='".$_SESSION['login']."'")or die(mysql_error());
     
    $somme_donnees=mysql_fetch_ssoc['$somme'];
    $moyenne=$somme_donnees['']/$nb['nbre'];

  8. #8
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    alors 2 possibilités...

    SOIT :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $somme=mysql_query("SELECT sum(alphabet1 + alphabet2 + alphabet3 ) FROM livret_scolaire  WHERE pseudo='".$_SESSION['login']."'")or die(mysql_error());
     
    $somme = mysql_result($somme, 0);

    SOIT :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $somme=mysql_query("SELECT sum(alphabet1 + alphabet2 + alphabet3 ) AS total FROM livret_scolaire  WHERE pseudo='".$_SESSION['login']."'")or die(mysql_error());
     
    $r = mysql_fetch_assoc($somme);
    $somme = $r['total'];

  9. #9
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    RE,
    en faite je souhaite calculer la moyenne d'un apprenant,
    à partir de la table livret_scolaire qui contient ses notes,
    le problème c'est que la table livret_scolaire contient des champs(note1,note2,..) qui sont de valeur null, et lorsqu l'utilisateur passe un test la table livret_scolaire se met à jour et les note sont ajoutées
    j'ai utilisé ce code mais y'aune erreur

    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
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?php
     
    if(isset($_SESSION['login'])){
    mysql_connect('localhost','root','');
    mysql_select_db("base");
    $nbr_test = mysql_query("SELECT COUNT(*) AS nbre FROM livret_scolaire  WHERE pseudo='".$_SESSION['variable']."'")or die(mysql_error());
     
    $nb = mysql_fetch_assoc($nbr_test);
     
    $somme=mysql_query("SELECT sum(alphabet1 + alphabet2 + alphabet3 ) AS total FROM livret_scolaire  WHERE pseudo='".$_SESSION['login']."'")or die(mysql_error()); 
     
    $r = mysql_fetch_assoc($somme);
    $somme = $r['total'];
    $moyenne=$r['total']/$nb['nbre'];
     
     
    $mean=mysql_query("UPDATE `base`.`livret_scolaire` SET `moyenne` = '".$moyenne."' WHERE `livret_scolaire`.`pseudo` = '".$_SESSION['login']."' ") or die("mysql error");
    $mm=mysql_fetch_array($mean);
    echo'votre moyenne est:'.$mm['moyenn'].'';
     
    }
     
     
     
    ?>
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP 2.0b1\www\monsite\dossier special\monlivret.php on line 205




    Que dois-je mettre??

  10. #10
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 474
    Points : 4 684
    Points
    4 684
    Par défaut
    quand tu fais un update, tu ne recupere aucune valeure.. donc ton mysql_fetch_array ne sert a rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE `base`.`livret_scolaire` SET `moyenne` = '".$moyenne."' WHERE `livret_scolaire`.`pseudo` = '".$_SESSION['login']."' ") or die("mysql error");
    et suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'votre moyenne est : '.$moyenne;

  11. #11
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    Oui c'est vrai ,mais mon code souffre de quelque chose, il m'affiche juste la somme et pas la division??j'ai alphabet1=20,alphabet2=20,alphabet3=20, alors normalement la moyenne est 20 pas 60???ou se trouve le problème ,

  12. #12
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    la table livret_scolaire contient quoi ? Je doute qu'elle contienne les noms des différentes matières, or d'après le code c'est ce qu'elle serait censée contenir.

    $nb['bre'] contient le nombre de lignes présentes dans "livret_scolaire", si ces lignes ne correspondent pas au nombre de matières de la somme effectuée la moyenne sera forcément fausse

    Si le nombre de matière est fixe, il suffit de remplacer $nb['bre'] dans la division par le nombre de matière (et de supprimer la requête SELECT COUNT(*) livret_scolaire car elle est, alors, inutile)


    Voici ce qu'il se passe à mon avis :
    il n'y a qu'une seule ligne dans livret_scolaire, donc le calcul est le suivant :

    (20+20+20)/1 = 60

  13. #13
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    RE,
    Non la table livret_scolaire contient les notes des exercices associés à chaque cour ,par exemple alphabet1 et la note de l'exercice du cour de l'alphabet n°1
    mon problème c'est que le nombre des exrcices passés n'est pas fixe, il change qu'a chaque fois que l'utilisateur passe un exercice , donc je dois compter le nombre des exercices passés par l'utilisateur ??donc je coyais que la requête SELECT COUNT me servira de savoir le nombre des exercices passés par l'utilisateur???

  14. #14
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    oops pardon j'avais mal vu les requêtes... ^^


    Quoi qu'il en soit, le chiffre à diviser est maintenant évidant en re-regardant les requetes : il s'agit de 3

    Ce n'est pas un nombre variable car vous additionnez 3 champs pour la moyenne il vous faudra donc diviser par 3 pour avoir la moyenne de chaque ligne !

    Pour avoir la moyenne général, il faudra donc faire la somme des moyennes divisée par le nombre d'exercices (le fameux SELECT COUNT(*))

  15. #15
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    Ok, Merci beaucoupppppppppppppppp darkstar123456 pour l'idée ,je vois bien maintenant que dois je faire, entre nous t s un miracleeee darkstar123456

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

Discussions similaires

  1. somme des éléments d'une matrice
    Par virginie999 dans le forum MATLAB
    Réponses: 3
    Dernier message: 13/06/2008, 21h14
  2. Ranger des éléments d'une table
    Par SOPSOU dans le forum Bases de données
    Réponses: 0
    Dernier message: 08/10/2007, 15h54
  3. Afficher la somme des lignes d'une table
    Par DJERDJAR YACINE dans le forum Bases de données
    Réponses: 5
    Dernier message: 23/07/2007, 19h18
  4. [Formulaire]somme des champs d'une table
    Par fa310428 dans le forum IHM
    Réponses: 3
    Dernier message: 03/04/2007, 19h33
  5. faire la somme des montants d'une table
    Par nestam dans le forum Requêtes
    Réponses: 3
    Dernier message: 15/02/2007, 00h15

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