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;