Explication du problème:
J’ai une table produit qui contient X produits (exemple: boulons, vis, mais aussi perceuses, donc aussi bien des éléments de machines que des machines elles mêmes). Le but est de sortir une liste de tous les produits, avec leur prix de vente, et la somme des prix de vente des produits les constituants (par exemple, une perceuse contient 15 vis). J’ai une table qui me permet de faire la jointure (construction, avec id_prod, id_prod_requis, quantité, type d’activité, qui peut être “construire”, ou “démonter”). Dans le cas qui m’interresse, je veux juste les couts associés à construire.
Le problème est que certains produits n’ont pas de produit les constituant (par exemple une vis) donc j’aimerais que le prix du produit constituant soit égal à NULL. Je me dis, pas de problème, on va utiliser LEFT JOIN. Mais en fait il ya trop de jointures et je m’y perds un peu…
Structures des tables:
vente AS vente_dest: information de vente du produit de destination (contient id_prod, mais aussi le prix de vente public du produit, ainsi que le prix d’achat)
prod AS prod_dest: information du produit de destination
vente AS vente_source: information de vente du produit source (contien id_prod, mais aussi le prix de vente public du produit, ainsi que le prix d’achat)
prod AS prod_source: information du produit source
activite: contient une liste des activité disponibles (actuellement, construire, démonter, remplacer une pièce).
construction: contient id_prod, id_prod_requis, qtt, et id_activite
Problème
En fait j’avais trouvé la jointure jusqu’à la table construction, mais après je ne sais pas si les tables ‘sources’ doivent être dans le LEFT JOIN ou pas:
SELECT
*
FROM
vente AS vente_dest,
prod AS prod_dest
LEFT JOIN
construction
ON
construction.id_prod = prod_dest.id
WHERE
vente_dest.id_prod = prod_dest.id
Jusque là, ca fonctionne (construction est bien a NULL pour les id produits qu’on n’ont pas d’infos de construction). Seulement je ne sais pas comment rattacher mes tables activite, vente_source et prod_source (sachant qu’ensuite je dois faire un GROUP BY prod_dest.id pour avoir la SUM des prix constituant le produit)
Alors, any idea?
edit: je tournes avec Mysql 4.1