Combinaison de SUM et d'AVG, pb avec le GROUP BY qui ne marc
Posté : 10 avr. 2008, 17:49
J'utilise mySQL 5.0.27.
J'ai une base avec des recettes et je voudrais calculer le cout de revient des recettes.
Pour celà, je prends le prix moyen des ingrédiants utilisés x la quantité et je fais la somme des divers ingrédiants.
Dans la base, j'ai :
- une table avec des prix issus de différents magasins ;
- une table avec les ingrédients qui composent de la recette ;
- une table avec la recette.
Lorsque je fais cette requête, je me retrouve avec une ligne par ingrédiant, donc 10 ingrédiants me donnent 10 lignes.
La structure des 3 tables concernées :
Merci du coup de main.
J'ai une base avec des recettes et je voudrais calculer le cout de revient des recettes.
Pour celà, je prends le prix moyen des ingrédiants utilisés x la quantité et je fais la somme des divers ingrédiants.
Dans la base, j'ai :
- une table avec des prix issus de différents magasins ;
- une table avec les ingrédients qui composent de la recette ;
- une table avec la recette.
Lorsque je fais cette requête, je me retrouve avec une ligne par ingrédiant, donc 10 ingrédiants me donnent 10 lignes.
Code : Tout sélectionner
SELECT RR.id_recette, RR.label_recette, RR.nb_part, SUM(RC.quantite) * AVG(MP.prix / MP.quantite_article)
FROM magasin_produit MP
INNER JOIN recette_composition RC
ON MP.id_produit = RC.id_produit
INNER JOIN recette RR
ON RC.id_recette = RR.id_recette
GROUP BY MP.id_produit, RC.id_recette
ORDER BY RR.label_recette
Code : Tout sélectionner
-- Structure de la table `magasin_produit`
--
CREATE TABLE `magasin_produit` (
`id_produit` int(11) NOT NULL,
`id_magasin` int(11) NOT NULL,
`prix` float(5,2) NOT NULL,
`quantite_article` float(6,2) NOT NULL,
`date_maj` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id_produit`,`id_magasin`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `recette`
--
CREATE TABLE `recette` (
`id_recette` int(10) unsigned NOT NULL auto_increment,
`type_recette` tinyint(3) unsigned NOT NULL default '0',
`nb_part` tinyint(4) NOT NULL,
`label_recette` varchar(40) NOT NULL,
`origine_recette` varchar(200) NOT NULL,
`resume_recette` text NOT NULL,
`url_origine_recette` varchar(200) NOT NULL,
`description_recette` text,
`visible_prive` char(1) NOT NULL default 'P',
PRIMARY KEY (`id_recette`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
-- --------------------------------------------------------
--
-- Structure de la table `recette_composition`
--
CREATE TABLE `recette_composition` (
`id_produit` tinyint(4) NOT NULL default '0',
`id_recette` int(11) NOT NULL,
`quantite` float(6,3) NOT NULL default '0.000',
KEY `id_part` (`id_produit`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;