Champ inconnu dans WHERE clause ?

Résolu
emrh Messages postés 439 Statut Membre -  
emrh Messages postés 439 Statut Membre -

Bonjour à tous,

On m'a aidé sur ce forum à construire une requête qui fonctionne parfaitement et pour laquelle je souhaitais faire une variante pour n'afficher QUE les factures dont le SOLDE était <> de 0
Si j'ai trouvé simple de faire une soustraction dans la requête, je n'arrive pas à récupérer dans la clause WHERE uniquement les enregistrements dont SOLDE<>0
Avez vous une idée pour solutionner ça ?

SELECT C.facture, clients.nom AS CLIENT, SUM(T.total) AS Total_facture, T2.VERST, SUM(T.total)-T2.VERST AS SOLDE 
FROM (SELECT id_contrat, prix * quantites AS total
      FROM compositions) AS T 
INNER JOIN contrats C ON C.id_contrat = T.id_contrat 
INNER JOIN clients ON clients.id_client = C.id_client 
LEFT JOIN (SELECT A.facture, SUM(A.acompte_recu) AS VERST 
           FROM acomptes A
           GROUP BY A.facture) T2
           ON T2.facture = C.facture 
WHERE SOLDE<>0
GROUP by C.facture

J'ai essayé d'appeler ce SOLDE avec tous les alias possible, y compris en le plaçant à différents endroits de la requête mais rien n'y fait !

Merci d'avance pour votre aide...


Linux / Chrome 104.0.0.0

2 réponses

  1. jee pee Messages postés 31943 Date d'inscription   Statut Modérateur Dernière intervention   10 001
     

    Bonjour,

    Le WHERE pourrait dans l'ordre de prise en compte des opérations s'effectuer avant le GROUP BY

    Il faudrait essayer

    GROUP by C.facture HAVING SOLDE <> 0
    
    ou
    
    GROUP by C.facture HAVING SUM(T.total)-T2.VERST <>  0

    1
  2. emrh Messages postés 439 Statut Membre 20
     

    Merci beaucoup Jee Pee, c'est exactement ce qu'il me fallait !
    Ça fonctionne IMPEC !

    0