Faire la somme de plusieurs enregistrements d'une table...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Faire la somme de plusieurs enregistrements d'une table...

par ouckileou » 13 févr. 2007, 18:51

Je t'ai détaillé les étapes dans mon post précédent

Si tu n'arrives pas, fais par étape : récupère d'abord la somme de toutes les visites pour chaque mois, tout département confondu.

par Spylberg » 13 févr. 2007, 18:48

en fait ce que je veux c'est la somme des visites pour plusieurs agences selon le département...

Par exemple, la somme des visites des 3 agences du département 49...

C'est la dessus que je bloque...

par ouckileou » 13 févr. 2007, 18:39

Tu veux :

la somme des visites : SUM(visites)
pour chaque mois : déjà fait, chaque total pour un mois est dans une colonne
pour chaque agence : GROUP BY agence

Pour des infos sur la modélisation de table, chercher dans le forum "MERISE" par exemple, ou sur le net. Il y a de bons cours UML ou MERISE sur www.developpez.com

par ouckileou » 13 févr. 2007, 18:32

le GROUP BY regroupe des lignes, pas des colonnes.

Et pourquoi veux-tu faire un GROUP BY mois, alors que tu as déjà une somme par mois (un mois par colonne) ??

par Spylberg » 13 févr. 2007, 18:14

J'ai fait ainsi et ça ne fonctionne pas....

Code : Tout sélectionner

// Requete $sqldpt = 'SELECT dpt, SUM($mois) AS somme FROM table WHERE dpt = $dpt GROUP BY $mois'; // Execute la requete $exe_sqldpt = mysql_query($sqldpt) or die ('Erreur SQL : '.$sqldpt.'<br />'.mysql_error()); // enregistre dans $Data $datadpt = mysql_fetch_assoc($exe_sqldpt); $somme = $datadpt['somme'];
Et mon echo $somme me renvoi le 1er enregistrement mais pas la somme....

par Spylberg » 13 févr. 2007, 17:28

Salut et merci de cette réponse précise !

Je n'ai pas encore testé ta requete :

Code : Tout sélectionner

SELECT dpt, SUM(janvier), SUM(février) FROM table GROUP BY dpt
Par contre cela m'interesse si tu as des infos, des liens ou un debut de réponse quand à l'enregistrement puis la consultation de stats plus précises par semaine comme tu l'évoques (en Php/SQL)

D'avance merci.

par ouckileou » 13 févr. 2007, 13:21

Petit problème de conception évident. Lorsque tu répètes des infos dans une table (ici une colonne pour chaque mois), tu peux tout de suite te dire qu'il y a un problème.

Voici une solution plus classique :

Code : Tout sélectionner

Agence -------- id_agence nom_agence dpt Mois ----- id_mois libelle_mois Visites ------- id_visite id_agence date_visite
Ce qui te permettrait de pouvoir récupérer les infos plus facilement, faire des tris etc

Un truc dans le genre :

Code : Tout sélectionner

SELECT a.id_agence, a.nom_agence, COUNT(id_visite) FROM agences AS a INNER JOIN visites AS v ON a.id_agence = v.id_agence GROUP BY a.id_agence, MONTH(v.date_visite);
Là pour faire des stats et tout, c'est quand même pas pratique... généralement on ne stocke pas de données calculées. On stocke plutôt une ligne avec la date, plutôt que directement le compte de visites par mois. Comment tu feras si tu veux un compte par semaine un jour ?

Pour ton cas, peut-être ceci marcherait non ?

Code : Tout sélectionner

SELECT dpt, SUM(janvier), SUM(février) FROM table GROUP BY dpt

Faire la somme de plusieurs enregistrements d'une table...

par Spylberg » 13 févr. 2007, 11:30

Bonjour a tous.

Bon mon titre n'est pas evident mais ça n'est pas evident a expliquer...! :S

Voilà, j'ai une table qui se compose ainsi (ce sont des données de visite):

agence, dpt, janvier, fevrier, mars, avril...etc (dpt pour 'departement')

Les données enregistrées sont a peu près ainsi :

angers, 49, 12, 14, 8...
cholet, 49, 21, 45, 84...
nantes, 44, 23, 84, 5...
ancenis, 44, 21, 45, 6...
rennes, 35, 41, 21, 74...etc

Je souhaiterais pouvoir afficher une somme (addition) en groupant par departement et par mois.
Par exemple la somme des visites sur le departement 49 au mois de fevrier.
Le département et le mois sont passés en variable, $dpt et $mois...

Je me prend le ch... depuis un moment mais je n'abouti a rien.....

Avez vous des solutions....?

D'avance merci de vos réponses éclairées !!!