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