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

Résolu/Fermé
julien37 - 5 juin 2009 à 10:43
Kentin76250 Messages postés 235 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 12 novembre 2014 - 5 juin 2009 à 15:13
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 1041 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 67
5 juin 2009 à 15:01
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 lundi 3 décembre 2007 Statut Membre Dernière intervention 12 novembre 2014 5
5 juin 2009 à 12:08
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 jeudi 28 mai 2009 Statut Membre Dernière intervention 11 février 2011 8
5 juin 2009 à 12:25
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 lundi 3 décembre 2007 Statut Membre Dernière intervention 12 novembre 2014 5
5 juin 2009 à 12:26
be test les deux mdr ensuite dis nous lol
0

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

Posez votre question
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 jeudi 28 mai 2009 Statut Membre Dernière intervention 11 février 2011 8
5 juin 2009 à 14:24
tu as essayé ce que j'ai dit ? lol

having à la place de where
0
Kentin76250 Messages postés 235 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 12 novembre 2014 5
5 juin 2009 à 14:28
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 jeudi 28 mai 2009 Statut Membre Dernière intervention 11 février 2011 8
5 juin 2009 à 14:33
un vrai dialogue de sourd je trouve ^^'
0
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
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 jeudi 28 mai 2009 Statut Membre Dernière intervention 11 février 2011 8
5 juin 2009 à 15:03
Le programme te renvoi quoi comme erreur, et à quelle ligne ?
0
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
C'est bon j'ai trouvé avec not between

Encore merci à vous
0
Kentin76250 Messages postés 235 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 12 novembre 2014 5
5 juin 2009 à 15:13
not between oui pourquoi pas mdr j'y avait meme pas pensé
0