Requete complexe

Résolu/Fermé
bloodchecker Messages postés 339 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 29 février 2012 - 4 août 2011 à 10:07
bloodchecker Messages postés 339 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 29 février 2012 - 4 août 2011 à 10:24
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

blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
4 août 2011 à 10:21
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
bloodchecker Messages postés 339 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 29 février 2012 35
4 août 2011 à 10:24
OH YEAH ! Merci beaucoup, je ne connaissais pas du tout HAVING. Merci encore, problème résolu !!!
0
thevinou Messages postés 1007 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 10 mars 2015 190
4 août 2011 à 10:18
As tu essayé des parenthese après WHERE et donc fermée avant GROUP BY
0
bloodchecker Messages postés 339 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 29 février 2012 35
4 août 2011 à 10:22
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)
0