Requete complexe [Résolu/Fermé]

Signaler
Messages postés
339
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
29 février 2012
-
Messages postés
339
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
29 février 2012
-
Bonjour,

J'effectue la requete suivante pour trouver le total des commande passée par un client sur ma boutique en ligne :

SELECT cli.email as email, cli.nom as nom, cli.prenom as prenom, SUM(v.prixu * v.quantite)+SUM(c.port) as CA FROM venteprod v LEFT JOIN commande c ON v.commande = c.id LEFT JOIN client cli ON c.client = cli.id GROUP BY cli.id

quelques infos :
la table client liste mes clients
la table commande liste mes commandes
la table venteprod liste les produits achetés pour chaque commande

bref cette commande fonction bien et me retourne pour chaque client son email, son nom, son prénom et le total de ce qu'il a acheté sur le site.

maintenant j'aimerai filtrer sur ce chiffre, j'ai donc pensé à faire :

SELECT cli.email as email, cli.nom as nom, cli.prenom as prenom, SUM(v.prixu * v.quantite) as total FROM venteprod v LEFT JOIN commande c ON v.commande = c.id LEFT JOIN client cli ON c.client = cli.id WHERE SUM(v.prixu * v.quantite)>500 GROUP BY cli.id

mais cette commande ne fonctionne pas et j'ai une erreur : "#1111 - Invalid use of group function"

Si vous avez besoin de précision ou si vous avez des suggestions, aidez moi !!

Merci.

3 réponses

Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 045
Salut,

je pense qu'il faut voir du côté de HAVING...

SELECT cli.email as email, cli.nom as nom, cli.prenom as prenom, SUM(v.prixu * v.quantite) as total FROM venteprod v LEFT JOIN commande c ON v.commande = c.id LEFT JOIN client cli ON c.client = cli.id GROUP BY cli.id HAVING SUM(v.prixu * v.quantite)>500
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
339
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
29 février 2012
35
OH YEAH ! Merci beaucoup, je ne connaissais pas du tout HAVING. Merci encore, problème résolu !!!
Messages postés
1007
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
10 mars 2015
190
As tu essayé des parenthese après WHERE et donc fermée avant GROUP BY
Messages postés
339
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
29 février 2012
35
Je viens d'essayer :
SELECT cli.email as email, cli.nom as nom, cli.prenom as prenom, SUM(v.prixu * v.quantite) as total FROM venteprod v LEFT JOIN commande c ON v.commande = c.id LEFT JOIN client cli ON c.client = cli.id WHERE (SUM(v.prixu * v.quantite)>500) GROUP BY cli.id

J'ai obtenu la même erreur.

Pour peut etre mieux visualiser mon problème, il s'agit de la même requete que sur cet exemple mysql : http://dev.mysql.com/doc/refman/5.0/fr/group-by-modifiers.html

Et dans ce cas la, je voudrais filtrer par rapport à SUM(profit)