requete sur x derniers mois
Bonjour,
Je cherche à faire une requete sql qui me retourne le montant saisi pour chaque mois pour les x derniers mois en prenant le mois en cours. Mon problème c'est que la sa me retourne tout les mois que j'ai dans ma base
Voici la requete:
Code:
1 2 3 4 5 6 7 8 9 10 11
| function obtenirReqRecapDerniersMois($unIdMembre, $unMois) {
$unMois = getMoisPrecedent($unMois);
$requete = "select LigneFrais.mois AS mois, SUM(LigneFrais.quantite * Frais.montant) as montantFrais from LigneFrais
inner join FicheFrais on LigneFrais.idMembre = ficheFrais.idMembre
inner join Frais on Frais.id = LigneFrais.idFrais
where FicheFrais.idMembre='" . $unIdMembre. "'
AND FicheFrais.mois = '".$unMois."'
group by FicheFrais.mois, LigneFrais.mois";
return $requete;
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| fonction getMoisPrecedent:
function getMoisPrecedent($mois){
$numAnnee =substr($mois,0,4);
$numMois =substr($mois,4,2);
if($numMois=="01"){
$numMois = "12";
$numAnnee--;
}
else{
$numMois--;
}
if(strlen($numMois)==1){
$numMois="0".$numMois;
}
else
$numMois= $numMois;
return $numAnnee.$numMois;
} |
Voilà comment est interprêter ma requete:
select LigneFrais.mois AS mois, SUM(LigneFrais.quantite * frais.montant) as montantFrais from LigneFrais inner join FicheFrais on LigneFrais.idMembre = ficheFrais.idMembre inner join Frais on Frais.id = LigneFrais.idFrais where FicheFrais.idMembre='1' AND FicheFrais.mois = '201308' group by FicheFrais.mois, LigneFrais.mois
Ma requete prendre juste le mois d'août alors qu'elle devrait les X derniers mois en partant de octobre
mon champs "mois" est de type char(6): aaaamm