Bonjour à tous.
Bloquant depuis hier sur la formulation d'une requéte SQL et ne trouvant pas de réponse satisfaisante, je me résous à appeler au secours.
Pour simplifier un maximum, j'ai 3 tables.
table fournisseur avec les champs id_fournisseur (INT), societe (VARCHAR)
table article avec id_article(INT), id_fournisseur(INT), stock (INT)
table article_achat avec id_achat(INT), id_article(INT), date_achat(DATE), prix_achat(FLOAT)
Important: dans la table article_achat, pour un même id_article, je peux avoir plusieurs enregistrements avec des date_achat et prix_achat différents (c'est d'ailleurs la source du problème)
Je voudrais faire une requête qui, pour chaque fournisseur, me fournit le total du stock et la somme correspondante.
Pour le stock, pas de pb:
SELECT fournisseur.id_fournisseur,fournisseur.societe AS nom_societe, SUM(article.stock) AS total_stock
FROM fournisseur
INNER JOIN article ON (article.id_fournisseur=fournisseur.id_fournisseur)
GROUP BY fournisseur.id_fournisseur
ORDER BY fournisseur.societe
Par contre, pour, dans la même requéte (en décomposant, je sais faire, mais je voudrais tout en une requête unique) obtenir mon SUM( article_achat.prix_achat * article.stock ), je suis censé faire un INNER JOIN sur la table article_achat pour récupérer la ligne correspondant au prix_achat le plus récent de l'article, et faire fi des autres. Logiquement, ca devrait donner qqch du genre
SELECT fournisseur.id_fournisseur,fournisseur.societe AS nom_societe, SUM(article.stock) AS total_stock
FROM fournisseur
INNER JOIN article ON (article.id_fournisseur=fournisseur.id_fournisseur)
INNER JOIN article_achat ON (article.id_article=article_achat.id_article AND
article_achat.date_debut=(SELECT MAX(date_debut) FROM article_achat WHERE article_achat.id_article=article.id_article))
GROUP BY fournisseur.id_fournisseur
ORDER BY fournisseur.societe
Cette requête est erronée sur le deuxième INNER JOIN. Quelqu'un saurait-il la formuler correctement pour obtenir le résultat désiré?