Une requete sql qui me dépasse!!

Beatrice -  
 A.Nonymous -
Bonjour,

depuis un certain temps je suis à la recherche d'une solution pour mon probleme de requete sql mais en vain. j'ai une base de données Access qui se compose de 7 tables dont voici la structure:
Articles (CodeArticle, Article, [qté par unité], disponible, CodeCatégorie)
Catégories (codeCatégorie, Catégorie)
Achats (RefAchat, [Date Achat], Fournisseur)
[Details Achat] (RefAchat, CodeArticle, [Qté Achtée], [P U Achat])
Ventes (RefVente, [Date Vente], CodeClient, [Reste à Payer])
[Details Ventes] (RefVente, codeArticle, [Qté Vendue], [P U Vente])
Clients (Codeclient, Nom, Prenom, Description)
la requete que je recherche porte sur trois tables: Articles, [Détails achats], [détails ventes]. bref, je veux une requete qui affiche la somme des qté achetées et la somme des qté vendues de chaque article ainsi que la différence entre les deux en tant que qté restante. pour ce faire j'ai fais appel à deux jointures externes, deux fonctions "sum" et une fonction d'agrégation "GROUP BY". cela etant, je me suis servi de la requete suivante:
-----------
SELECT Articles.CodeArticle, Articles.Article, Sum([Details Achats].[Qté Achetée]) AS [Qté Achetée], Sum([Details ventes].[Qté Vendue]) AS [Qté Vendue], (Sum([Details Achats].[Qté Achetée])-Sum([Details ventes].[Qté Vendue])) AS [Qté en stock]
FROM [Details Achats] RIGHT JOIN (Articles LEFT JOIN [Details Ventes] ON Articles.CodeArticle=[Details Ventes].codearticle) ON Articles.CodeArticle=[Details Achats].codeArticle
GROUP BY Articles.CodeArticle, Articles.Article
ORDER BY Articles.CodeArticle;
-----------
A l'execution, je ne reçoi aucune erreur, mais le résultat s'avère faux: la somme des qté achetée de l'article dans la table [Details Achats] se multiplie par le nombre d'enregistrements du même article dans la table [détails ventes] et vice versa.
svp si quelqu'un peut m'aider je vous en serais très reconnaissant.
ps: les champs soulignés sont des clés migrants d'autres tables
A voir également:

2 réponses

blux Messages postés 27106 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Salut,

quelles sont les relations entre tables ?

ps: les champs soulignés sont des clés migrants d'autres tables
Il eut été plus intéressant d'avoir souligné les clés primaires...
0
A.Nonymous
 
Il aurait peut-être été pertinent de stocker [Details Achat] et [Details Ventes] dans une même table.

Ceci dit, le SQL :
SELECT
Articles.CodeArticle,
Articles.Article,
[Qté Achetée],
Sum([Details ventes].[Qté Vendue]) AS [Qté Vendue]
[Qté Achetée] - Sum([Details ventes].[Qté Vendue]) AS [Qté en stock]
FROM (
SELECT
Articles.CodeArticle,
Articles.Article,
Sum([Details Achats].[Qté Achetée]) AS [Qté Achetée]
FROM Articles
LEFT JOIN [Details Achats] ON Articles.CodeArticle=[Details Achats].codeArticle
GROUP BY Articles.CodeArticle
) Articles
LEFT JOIN [Details Ventes] ON Articles.CodeArticle=[Details Ventes].codearticle
GROUP BY Articles.CodeArticle;

Il se pourrait que cette syntaxe ne soit pas acceptée par Access :S
0