Jump to content

[Résolu] requete avec jointure sql


Recommended Posts

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...