victa Posted June 21, 2011 Share Posted June 21, 2011 Bonjour,Je suis en train de développer un module à part entière qui permet de gérer des prescripteurs produits, un par client. Dans le backoffice je cherche à faire un "palmares" des meilleurs prescripteurs en les classant par le chiffre HT de leur prescriptions. Pour ce faire j'ai crée de nouvelles tables comme suit : les coordonnées des prescripteurs : CREATE TABLE IF NOT EXISTS `ps_prescripteur` ( `id` int(11) NOT NULL auto_increment, `mail` text NOT NULL, `password` varchar(255) NOT NULL, `civilite` text NOT NULL, `nom` text NOT NULL, `prenom` text NOT NULL, `adresse` text NOT NULL, `adresse2` text NOT NULL, `code_postal` text NOT NULL, `ville` text NOT NULL, `telephone` text NOT NULL, `mobile` text NOT NULL, `fax` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ; et la table de liaison 1/n entre customer et prescritpeur CREATE TABLE IF NOT EXISTS `ps_prescripteur_customer` ( `id` int(11) NOT NULL auto_increment, `id_customer` text NOT NULL, `id_prescripteur` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ; ce qui logiquement me permet de prendre pour chaque commande un client et son prescripteur et donc de sommer toutes les commandes pour un prescripteur via cette requête : SELECT p.*, o.id_currency, SUM(o.total_products_wt) total FROM `ps_prescripteur` p RIGHT JOIN `ps_prescripteur_customer` pc ON (pc.`id_prescripteur` = p.`id`) RIGHT JOIN `ps_customer` c ON (c.`id_customer` = pc.`id_customer`) RIGHT JOIN `ps_orders` o ON (o.`id_customer` = c.`id_customer`) GROUP BY p.id Mais voila cette requete pour deux commandes de 618,00 € et 189,05 € donne un résultat total de 2 606,05 € !Je pense que le soucis vient des jointures mais alors je n'arrive pas à trouver ou !Merci d'avance. Link to comment Share on other sites More sharing options...
Raphaël Malié Posted June 21, 2011 Share Posted June 21, 2011 Je ne vois pas au premier coup d’œil ce qui ne va pas, mais pour trouver d'où vient le problème je vous suggère dans un premier temps de supprimer le SUM() et la clause GROUP BY pour simplement sélectionner l'ensemble des résultats, à partir de là vous pourrez plus facilement voir ce que vous souhaitez additionner et comment grouper pour que cela fonctionne.Ps : je vous conseil d'éviter les champs TEXT à gogo aussi dans vos structures de table, vous allez énormément perdre en performance. Link to comment Share on other sites More sharing options...
victa Posted June 21, 2011 Author Share Posted June 21, 2011 Merci effectivement j'ai pu comprendre, il fallait isoler les ps_orders.valid = 1 ! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now