Bonjour à tous,
Je sèche pour la construction d'une requête.
Voici la table
IDFacture_détail int(11)
IDFacture int(11)
Version int(4)
Montant float(9,2)
Payé Bool(1)
Exemple :
IDFacture_détail | IDFacture | Version | Montant | Payé
______15___________1_________1______10______0
______11___________1_________2______11______1
______16___________1_________3______6_______0
______17___________2_________1______20______0
______20___________3_________1______10______0
______18___________3_________2______10______1
Je cherche à obtenir le montant des factures payées, pour la dernière version de chaque facture.
J'ai commencé par :
J'obtient le message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT SUM(A.Montant) AS Mont FROM Facture_détail AS A WHERE A.IDFacture_détail IN ( SELECT MAX(B.Version) AS Version, IDFacture_détail FROM Facture_détail AS B WHERE B.payés = 1 GROUP BY B.IDFacture )
L'utilisation de fonctions agrégats avec d'autres rubriques ou fonctions non agrégat n'est pas autorisée sans l'utilisation d'une clause GROUP BY. Toutes les rubriques ou fonctions non agrégat doivent figurer dans la clause GROUP BY.
Je sais que cela vient de "SELECT MAX(B.Version) AS Version, IDFacture_détail" qui n'est pas dans le group by ou associé à un max, avg ... Mais IDFacture_détail n'est pas incrémentiel
Je ne voie pas comment contourner le problème.
Merci par avance à ceux qui pourrait m'aider.
Partager