Bonjour,

Pour les besoins d'un outil que je développe, j'utilise la requête suivante :

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
// COMPTEUR NOIR ET BLANC
$query = $bdd->prepare('SELECT lieu,
                    SUM(CASE WHEN YEAR(date_cpa) = 2007 THEN compt_nb ELSE 0 END) AS "total_2007",
                    SUM(CASE WHEN YEAR(date_cpa) = 2008 THEN compt_nb ELSE 0 END) AS "total_2008",
                    SUM(CASE WHEN YEAR(date_cpa) = 2009 THEN compt_nb ELSE 0 END) AS "total_2009",
                    SUM(CASE WHEN YEAR(date_cpa) = 2010 THEN compt_nb ELSE 0 END) AS "total_2010",
                    SUM(CASE WHEN YEAR(date_cpa) = 2011 THEN compt_nb ELSE 0 END) AS "total_2011",
                    SUM(CASE WHEN YEAR(date_cpa) = 2012 THEN compt_nb ELSE 0 END) AS "total_2012",
                    SUM(CASE WHEN YEAR(date_cpa) = 2013 THEN compt_nb ELSE 0 END) AS "total_2013",
                    SUM(CASE WHEN YEAR(date_cpa) = 2014 THEN compt_nb ELSE 0 END) AS "total_2014"
                    FROM CP_ANALYSE, LIEUX
                    WHERE CP_ANALYSE.id_lieu=LIEUX.id_lieu
                    AND lieu = ?
                    GROUP BY LIEUX.id_lieu');
$query->execute(array("$lieu"));
$donnees = $query->fetch();
$query->closeCursor();
Tout ça fonctionne sans souci. Cette requête me renvoi le nombre de copies noir & blanc par année selon le lieu. Le lieu étant variable comme vous pouvez le voir.

Dans le but d'optimiser l'outil, je voudrais pouvoir sélectionner une plage d'années. J'ai déjà préparer la page pour sélectionner la date de début et de fin, par contre, est-ce que je peux au niveau de ma requête SQL rendre le nombre de SUM CASE variable selon mon choix ?

J'ai pensé à faire une boucle if, elseif mais je serais limiter au niveau du nombre d'année déjà connues et ça ne me paraît pas tellement optimisé...

Merci pour votre aide !

PS: J'ai hésité à mettre ça dans la partie SQL :-/