par
rspir » 05 sept. 2006, 09:25
Bonjour
J'ai une base de données mysql qui stocke des données par jour depuis 2 ans.
Je dois comparer les données cumulées par an : je dois donc afficher les données cumulées et faire un rapport entre les données obtenues.
ex : 2005 = 100 - 2006 = 110 - Delta = +10%
J'arrive à obtenir ce que je veux en faisant un group by sur l'année (que j'extrait d'un champ date de ma table).
Code : Tout sélectionner
$requete = "select YEAR(date) as an, sum(c1) as c1, sum(c2) as c2,sum(c3) as c3,sum(c4) as c4,sum(c5) as c5, sum(c6) as c6"
. " from matable"
. " where date between '$periode1' and '$periode2'"
. " or date between '$periode1_an0' and '$periode2_an0'"
. " group by an";
Et ensuite je réalise la boucle suivante :
while ($eacamp = LigneSuivante($resultat))
{
$i++;
$eacamp[ok] = $eacamp[c1] + $eacamp[c2] + $eacamp[c3]+ $eacamp[c4] + $eacamp[c5];
$eacamp[nok] = $eacamp[c6] + $eacamp[c7];
//Stockage des valeur par année
if ($i==1) //2005
{
$comp1[ok]=$eacamp[ok];
$comp1[nok]=$eacamp[nok];
}
if ($i==2) //2006
{
$comp2[ok]=$eacamp[ok];
$comp2[nok]=$eacamp[nok];
}
}
$comp[ok] = (($comp2[ok] /$comp1[ok])-1)*100;
$comp[ok] = sprintf("%01.1f",$comp[ok])." %";
$comp[nok] = (($comp2[nok] /$comp1[nok])-1)*100;
$comp[nok]= sprintf("%01.1f",$comp[nok])." %";
Pour le moment cela fonctionne tant que j'ai 2 ans en base.
Mais quand je vais avoir 3 ans, cela ne fonctionnera plus sans adaptation.
Surtout, je voudrais faire la même chose par mois. Je souhaite modifier ma requete et mon code php pour pouvoir obtenir un tableau du type :
janvier an-1 / janvier an / delta
février an-1 / février an / delta
...
Comment faire ?