Requete complexe

Résolu
bloodchecker Messages postés 339 Date d'inscription   Statut Membre Dernière intervention   -  
bloodchecker Messages postés 339 Date d'inscription   Statut Membre Dernière intervention   -
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 27147 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
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   Statut Membre Dernière intervention   35
 
OH YEAH ! Merci beaucoup, je ne connaissais pas du tout HAVING. Merci encore, problème résolu !!!
0
thevinou Messages postés 1008 Date d'inscription   Statut Membre Dernière intervention   190
 
As tu essayé des parenthese après WHERE et donc fermée avant GROUP BY
0
bloodchecker Messages postés 339 Date d'inscription   Statut Membre Dernière intervention   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)
0