Cumul de donénes (de date à date)

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 : Cumul de donénes (de date à date)

par rspir » 19 août 2006, 12:20

Ah bah je n'avais jamais imaginé utiliser le OR dans la clause WHERE ....
M'en va essayer de suite !

EDIT : Bien sur, cela fonctionne tout bien ... ! Cela me fait économiser une requête et apprendre un truc de plus. Merci !!!!

par Ryle » 19 août 2006, 12:16

Ca marche bien aussi :)

cela dit, tu peux aussi compléter ma requête avec un where pour restreindre les zones affectées avec tes dates (ca ne change pas grand chose si ce n'est que ca ne fait qu'une requête.. après faut faire au plus simple et au plus clair pour toi :)) :

Code : Tout sélectionner

SELECT ... FROM ... WHERE (ta_date BETWEEN dd/mm/yyyy-1 AND dd/mm/yyyy-1) OR (ta_date BETWEEN dd/mm/yyyy AND dd/mm/yyyy) GROUP BY ...

par rspir » 19 août 2006, 12:07

Bonjour

J'ai déjà testé le group by.
Le souci c'est qu'il me prend tout 2005 (du 01/01/2005 au 31/12/2005) alors que je voudrais qu'il s'arrete au 19/08/2006 (dans mon exemple).

Pour le moment, je fais effectivement 2 requetes :

1. je récupère la date 2006 souhaitée (date la plus récente dans ma table) => DATE1
2. Je calcule an -1 => DATE2
3. je fais une requete allant du 1er janvier de l'année en cours jusqu'à DATE1 dans le between
4. je fais une requete allant du 1er janvier de l'année-1 jusqu'à DATE2 dans le between

par Ryle » 19 août 2006, 12:03

Option 3 : Si c'est sur l'année complète que le cumul t'interesse, tu peux aussi utiliser la commande GROUP BY pour regrouper des éléments :

Code : Tout sélectionner

-- selectionne la partie année des dates et la somme de tes valeurs SELECT YEAR(ta_date) AS annee, SUM(ton_champ) AS cumul FROM ta_table GROUP BY annee -- regroupe les résultat sur la colonne annee ORDER BY annee -- tri sur la colonne annee
Tu obtiendras ainsi des données sous la forme :

Code : Tout sélectionner

ANNEE | CUMUL ----------- 2003 | 12 2005 | 83 2006 | 33
Si par contre le date à date est important, au choix, tu fais tes deux requêtes (ce qui est probablement le plus simple), soit effectivement, tu récupères le tout en php, puis tu fais une boucle et stocke les résultat dans des variables ou un tableau en fonction de la date
while ($row = mysql_fetch_assoc($res) ) {
  $tableau[$row['annee']] += $row['ton_champ'];
}

Cumul de donénes (de date à date)

par rspir » 19 août 2006, 11:21

Bonjour

Je reviens de nouveau avec mon histoire de cumul de données avec une nouvelle variante !

On part d'une table avec un champ date et un champ numérique.

Nous sommes le 19/08. Je veux faire un cumul des données depuis le premier jour de l'année. Donc je lance une requete (SQL COUNT par exemple) avec mes 2 bornes (01/01/2006 et 19/08/2006).

MAIS, je souhaite aussi avoir le même cumul pour l'année dernière c'est à dire la somme de mon champ numérique pour la période 01/01/2005 au 19/08/2005 ... pour faire une comparaison.

Dans ce cas, qu'est ce qui esl le mieux :

-> Je fais 2 requetes ?
-> Je fais une requete et je récupère toutes mes données depuis le 01/01/2005 et je calcule mes valeurs ? C'est cette solution qui me séduit le plus mais je n'arrive pas à la mettre en oeuvre