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 :

rowCount() et SUM()


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut rowCount() et SUM()
    Bonjour,
    Je tente
    • de faire la somme d'une colonne
    • et aussi d'obtenir le nombre de lignes


    Je dois me planter entre rowCount() de php et SUM() de MySql
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try { $sql = "SELECT id_user,id_cotisation,total_cotisation, SUM(total_cotisation) AS somme_cmd FROM cotisation"; 
      $stmt_cmds = $bdd_user->prepare($sql);
      } catch(PDOException $e) {echo 'Erreur: '.$sql . "<br>" . $e->getMessage();$erreur=$sql;} 
      $stmt_cmds->execute(array());
     
    $cmds = $stmt_cmds->fetch();
    echo $cmds['somme_cmd']; // >  Ok  on obtient bien SUM
     
    echo $stmt_cmds->rowCount(); // > Retourne 1

    Par contre en enlevant
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
     SUM(total_cotisation) AS somme_cmd
    Le rowCount(); est Ok
    ---
    Est-il possible de faire SUM() et rowcount() dans la même requête ?

    Merci pour vos lumières.

    Ps: Je ne sais plus comment indiquer le type de langage dans les balises [CODE].

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- il faut faire 2 requêtes.
    Ou utiliser "GROUP BY".

    • SQL SUM()


    2-
    Citation Envoyé par feelwatt Voir le message
    Ps: Je ne sais plus comment indiquer le type de langage dans les balises [CODE].
    • [CODE=php]
    • [CODE=sql]

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Ok, merci pour la réponse.
    Avec GROUP BY après FROM
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT id_user,id_cotisation,total_cotisation, SUM(total_cotisation) AS somme_cmd FROM cotisation GROUP BY total_cotisation";
    On obtient le nombre -1
    et la somme est la valeur du premier resultat (total_cotisation)

    Avec
    Le rowCount() est bon
    mais idem pour la somme

    La solution sera peut_être bien de faire deux requêtes.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Tu peux faire une seule requête et faire une boucle PHP pour calculer la somme.

    A+.

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Une boucle sera plus simple.
    Dommage que l'on ne puisse pas faire cela en une seule requête.

    Merci.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par feelwatt Voir le message
    ...Dommage que l'on ne puisse pas faire cela en une seule requête...

    dommage que le lave-vaisselle ne fasse pas aussi sèche-ligne, cafetière et casse-noisettes...

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    C'est vrai que c'est pas faux...

    Une autre choses (dont la roue doit être déjà inventée) serait de faire une somme par mois,
    dans le but de créer un array mois/somme.


    En suivant la discution: mysql/requetes/somme-regroupee-mois/
    Cette requête est nickel:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = " SELECT date_cotisation,SUM(total_cotisation) as total,month(date_cotisation) as mois FROM cotisation group BY year(date_cotisation),month(date_cotisation) ORDER BY date_cotisation";

    Par contre pour avoir remplir l'array les mois qui ont une somme == 0.
    Faudrait-il faire une boucle ente la date de début et celle de fin, en incrémentant le mois recherché ?
    et lancer la requête pour chaque mois ?

    Pour info le but est d'afficher les résultats dans un charts.js.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    • As-tu testé la requête ?
    • Vérifié ce qu'elle renvoie ?

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Comme je fais un while sur la requête, elle ne renvoie que ce qu'elle trouve dans la table:
    Code php : 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
            $array_months=["01" => "Janvier","02" => "Février","03" => "Mars","04" => "Avril","05" => "Mai","06" => "Juin","07" => "Juillet","08" => "Août","09" => "Septembre","10" => "Octobre","11" => "Novembre","12" => "Décembre"];
     
            $sql = " SELECT date_cotisation,SUM(total_cotisation) as total,month(date_cotisation) as mois FROM cotisation group BY year(date_cotisation),month(date_cotisation) ORDER BY date_cotisation";
            $stmt_cotisations = $bdd_user->prepare($sql);
          } catch(PDOException $e) {echo 'Erreur: '.$sql . "<br>" . $e->getMessage();}
     
          $stmt_cotisations->execute(array());  
          while ($cotisations=$stmt_cotisations->fetch()) { 
            // Mois de l'array months
              echo $array_months[date("m", strtotime($cotisations['date_cotisation']))]
            // Année
              echo date("Y", strtotime($cotisations['date_cotisation'])); 
            //Somme
              echo $cotisations['total'].'<br>';
     
          }
    Résultats:
    Mars-2018 = 202.02
    Novembre-2018 = 363.60
    Janvier-2019 = 1000.00
    Février-2019 = 303.00
    Mars-2019 = 303.04
    Août-2019 = 800.00

    Il n'y a donc pas les mois qui n'existent pas dans la table

  10. #10
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Euh...

    un

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select champ1, champ2, sum(champ3) as somme, count(*) as comptage
    from table
    group by champ1, champ2

    n’irait pas ?

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par badaze Voir le message
    Euh...
    un
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select champ1, champ2, sum(champ3) as somme, count(*) as comptage
    from table
    group by champ1, champ2
    n’irait pas ?
    Yes, comme ça c'est bon,
    en enlevant le Group by.

    Et pour finir cette discution.
    Si on veut faire plusieurs sommes selon des critères se trouvant dans une colonne. style sur les dates.
    Il va falloir faire plusieurs requêtes ou un while sur les résultats avec des conditions, non ?

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

Discussions similaires

  1. pb avec la fonction sum!
    Par ber_jp dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 28/08/2004, 23h22
  2. [xsl][sum]
    Par Patrick dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 25/03/2004, 15h07
  3. Fonction 'SUM'
    Par X-Deus dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/06/2003, 09h22
  4. sum(XPATH) retourne NaN
    Par TOM-Z dans le forum XMLRAD
    Réponses: 4
    Dernier message: 19/03/2003, 14h48
  5. [VBA-E] Fonction sum() dans une cellule
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/12/2002, 11h18

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