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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
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