CASE WHEN

Résolu
theflayer Messages postés 125 Date d'inscription dimanche 28 février 2010 Statut Membre Dernière intervention 21 juin 2015 - 21 févr. 2013 à 11:23
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 23 févr. 2013 à 15:05
Bonjour tous le monde,

j'ai un soucis avec une requête, qui me renvoie l'erreur : Invalid use of group fuction
je m'explique :

Je veux faire le calcul via la fonction SUM() sur plusieurs lignes d'une table ayant un champ identique mais avec une restriction dans le WHERE,le problème est que si cette restriction n'existe pas (parce qu’elle n'est pas encore remplie) dans la ligne, elle ne me retourne rien.

Cela sera plus parlant avec la requête :

SELECT *,SUM(MONTANT_EURO) AS TOTAL FROM note n 
LEFT JOIN depense d ON(n.ID_NOTE=d.ID_NOTE) 
WHERE CASE WHEN COUNT(ID_DEPENSE)> 0 THEN ID_RUBRIQUE != 7 END 
GROUP BY n.ID_NOTE ORDER BY n.ID_NOTE ASC	


En gros si COUNT(ID_DEPENSE) me renvoie 0 c'est que la ligne n'existe pas et dans ce cas je veux que le WHERE soit vide (pour qu'il me renvoie les autres informations sans le SUM(), sinon si COUNT(ID_DEPENSE) est supérieur à 0 dans ce cas le WHERE possède la restriction ID_RUBRIQUE != 7

Voila j’espère avoir su m'expliquer.
Si vous avez une idée,
Merci d'avance.

-La constante d'une personne est la variable d'une autre.
-Il y a deux manières d'écrire des programmes sans erreurs. Seule la troisième marche
-Tout programme a (au moins) deux buts : celui pour lequel il a été écrit, et celui pour lequel il ne l'a pas
A voir également:

6 réponses

theflayer Messages postés 125 Date d'inscription dimanche 28 février 2010 Statut Membre Dernière intervention 21 juin 2015 2
21 févr. 2013 à 13:29
hum, pas terrible l'affichage .

SELECT *,SUM(MONTANT_EURO) AS TOTAL FROM note n
LEFT JOIN depense d ON(n.ID_NOTE=d.ID_NOTE)
LEFT JOIN etat e ON(n.ID_ETAT=e.ID_ETAT)
WHERE (SELECT CASE WHEN COUNT(ID_DEPENSE)> 0 THEN d.ID_RUBRIQUE != 7 ELSE 1 END)
AND ID_EMPLOYE="'.$_SESSION['ID_EMPLOYE'].'" GROUP BY n.ID_NOTE ORDER BY n.ID_NOTE ASC


-La constante d'une personne est la variable d'une autre.
-Il y a deux manières d'écrire des programmes sans erreurs. Seule la troisième marche
-Tout programme a (au moins) deux buts : celui pour lequel il a été écrit, et celui pour lequel il ne l'a pas
3