Pour les besoins d'un outil que je développe, j'utilise la requête suivante :
Code : Tout sélectionner
// 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();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 :-/