PHP/Nombre de SELECT (sum case) selon variables
Bonjour,
Pour les besoins d'un outil que je développe, j'utilise la requête suivante :
Code:
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 :-/