Bonjour à tous,
Voilà l'analyse:
La requête:
J'ai évité la lecture des 36 "case", j'en ai laissé que 8, pour l'exemple ça suffit largement.
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
19
20 SELECT PRESTATION.PRESTATION_ABREGE, SUM(CASE WHEN NUTRITION.NUTRITION_CLE = '25000' AND DIET.ORDRE <> 0 THEN (NUTRITION.POURCENTAGE * PLATCOM.QUANTITE_PLAT) END) AS Proteines, SUM(CASE WHEN NUTRITION.NUTRITION_CLE = '310' AND DIET.ORDRE <> 0 THEN (NUTRITION.POURCENTAGE * PLATCOM.QUANTITE_PLAT) END) AS Energie_STD, SUM(CASE WHEN NUTRITION.NUTRITION_CLE = '31000' AND DIET.ORDRE <> 0 THEN (NUTRITION.POURCENTAGE * PLATCOM.QUANTITE_PLAT) END) AS Glucides_disponibles, SUM(CASE WHEN NUTRITION.NUTRITION_CLE = '10200' AND DIET.ORDRE <> 0 THEN (NUTRITION.POURCENTAGE * PLATCOM.QUANTITE_PLAT) END) AS Calcium, SUM(CASE WHEN NUTRITION.NUTRITION_CLE = '10200' AND DIET.ORDRE <> 0 THEN (NUTRITION.POURCENTAGE * PLATCOM.QUANTITE_PLAT) END) AS Calcium_2, SUM(CASE WHEN NUTRITION.NUTRITION_CLE = '311' AND DIET.ORDRE <> 0 THEN (NUTRITION.POURCENTAGE * PLATCOM.QUANTITE_PLAT) END) AS Energie_STD_2, SUM(CASE WHEN NUTRITION.NUTRITION_CLE = '31001' AND DIET.ORDRE <> 0 THEN (NUTRITION.POURCENTAGE * PLATCOM.QUANTITE_PLAT) END) AS Glucides_disponibles_2, SUM(CASE WHEN NUTRITION.NUTRITION_CLE = '32000' AND DIET.ORDRE <> 0 THEN (NUTRITION.POURCENTAGE * PLATCOM.QUANTITE_PLAT) END) AS Sucres FROM NUTRITION, PLATCOM, DIET, PRESTATION WHERE NUTRITION.PLAT_CLE = PLATCOM.PLAT_CLE AND DIET.NUTRITION_CLE = NUTRITION.NUTRITION_CLE AND PLATCOM.PRESTATION_CLE = PRESTATION.PRESTATION_CLE AND PLATCOM.DATE BETWEEN {DateDebut} AND {DateFin} AND PLATCOM.ECOLE_CLE = {ID_Ecole} AND DIET.ORDRE <> 0 GROUP BY PRESTATION.PRESTATION_ABREGE
Mon problème est que la ligne:
AND DIET.ORDRE <> 0
n'est pas prise en compte, puisque la requête retourne obligatoirement une ligne par "case".
Y a t'il un moyen de supprimer une colonne généré par le "case", si celle-ci est lié à un DIET.ORDRE <> 0?
Je reste à votre disposition pour toute question.
Merci d'avance,
Jefty
Partager