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

Résolu
julien37 -  
Kentin76250 Messages postés 241 Statut Membre -
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
Configuration: Windows XP Internet Explorer 7.0

14 réponses

  1. dam75 Messages postés 1212 Statut Webmaster 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
  2. Kentin76250 Messages postés 241 Statut Membre 5
     
    peux tu mettre toute ta requête stp

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

    ta essayé?
    0
  3. necro27 Messages postés 125 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
  4. Kentin76250 Messages postés 241 Statut Membre 5
     
    be test les deux mdr ensuite dis nous lol
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. necro27 Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   8
     
    tu as essayé ce que j'ai dit ? lol

    having à la place de where
    0
  8. Kentin76250 Messages postés 241 Statut Membre 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
  9. necro27 Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   8
     
    un vrai dialogue de sourd je trouve ^^'
    0
  10. 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
  11. 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
  12. necro27 Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   8
     
    Le programme te renvoi quoi comme erreur, et à quelle ligne ?
    0
  13. 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
  14. julien37
     
    C'est bon j'ai trouvé avec not between

    Encore merci à vous
    0
  15. Kentin76250 Messages postés 241 Statut Membre 5
     
    not between oui pourquoi pas mdr j'y avait meme pas pensé
    0