{MySQL} Nommer résultat d'une somme en "where

Résolu
julien37 -  
Kentin76250 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Grâce à l'un d'entre vous, j'ai réussi à effectuer une requête qui à mes yeux était assez compliqué. Mais, un deuxième problème vient à mon encontre.

En effet, dans ma requete il y a la différence de 2 colonnes qui me donne un résultat final, comme suit :

SUM(IF(Sens = 'D', Dons, 0)) - SUM(IF(Sens = 'C', Dons, 0)) AS Solde

Le problème que je rencontre est de savoir comment utiliser "Solde" dans la clause "WHERE" car je veux que le solde soit >=0,01 ou <=-0,01.

A l'heure actuel, en utilisant Solde directement, ou la formule, SQL me dit que je fais une erreur de synthaxe.

Je viens donc vers vous pour avoir une solution.....

Merci d'avance
A voir également:

14 réponses

dam75 Messages postés 1063 Date d'inscription   Statut Webmaster Dernière intervention   67
 
Bonjour,

select IIII,CCCCCC,
SUM(IF(Sens = 'D', Dons, 0)) AS SumD,
SUM(IF(Sens = 'C', Dons, 0)) AS SumC,
SUM(IF(Sens = 'D', Dons, 0)) - SUM(IF(Sens = 'C', Dons, 0)) AS Solde
FROM Table_sql
where CCCCCC>=470000 and CCCCCC<=479999
GROUP BY IIII, CCCCCC
HAVING Solde BETWEEN -0.01 AND 0.01;
1
Kentin76250 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   5
 
peux tu mettre toute ta requête stp

where solde >=0,01
or solde <=-0,01

ta essayé?
0
necro27 Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   8
 
Salut à vous,

Petite hypothèse, pardonnez moi si je me trompe, mais ne serait-ce pas un having plutôt qu'un where puisque tu utilise une fonction et non un nom de champ ?

autrement dit écrire

having solde >= 0,01
or solde <= -0,01

quelques notions de cours lointains, il me semble que l'on m'avait appris cela mais pas persuadé.
et je passais par là..

a+
0
Kentin76250 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   5
 
be test les deux mdr ensuite dis nous lol
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
julien37
 
J'ai essayé where solde >=0,01 and solde<=0,01, mais ça ne fonctionne pas. Cela m'ecrit que je fais une erreur de syntaxe car il ne connait pas la colonne Solde.
Ce qui me parait bizare car j'avais écris après as....

J'ai pas d'autres pistes??
0
necro27 Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   8
 
tu as essayé ce que j'ai dit ? lol

having à la place de where
0
Kentin76250 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   5
 
solde c'est le nom de ta colonne(j'ai jamais eu besoin de faire ca donc ??) ta pas un champs à qui tu pourrais mettre la condition de 0.01 etc...?

et pi le or??? lol
0
necro27 Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   8
 
un vrai dialogue de sourd je trouve ^^'
0
julien37
 
J'ai essayé avec having et avec where mais ça ne marche ni l'un ni l'autre.

En fait ma requete entière est la suivante :

select IIII,CCCCCC,
SUM(IF(Sens = 'D', Dons, 0)) AS SumD,
SUM(IF(Sens = 'C', Dons, 0)) AS SumC,
SUM(IF(Sens = 'D', Dons, 0)) - SUM(IF(Sens = 'C', Dons, 0)) AS Solde
FROM Table_sql
where CCCCCC>=470000 and CCCCCC<=479999
GROUP BY IIII, CCCCCC;

Et je voudrais supprimer des données qui me sont reportées, toutes celles où le montant dans la colonne Solde est comprise entre -0.01 et 0.01

Avez vous une idée??
0
julien37
 
J'avou necro27 que j'ai eu un peu de mal à m'exprimer....lol
Maintenant j'espère avec la requete actuel que je vous ait montré, ça va marcher...

Merci d'avance
0
necro27 Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   8
 
Le programme te renvoi quoi comme erreur, et à quelle ligne ?
0
julien37
 
La proposition de Dam75 est quasiment bonne mais c'est l'inverse que je cherche, c'est à dire les propositions autres que comprise entre -0.01 et 0.01. Comment dois-je faire pour inverser le having?

Donc encore Merci à Dam75 et également à Necro27 et Kentin76250 car sans vous je n'y serais pas arrivé.

Merci d'avance pour la dernière petite question...
0
julien37
 
C'est bon j'ai trouvé avec not between

Encore merci à vous
0
Kentin76250 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   5
 
not between oui pourquoi pas mdr j'y avait meme pas pensé
0