Réaliser une requête à partir de deux autres requêtes

chrys -  
 chrys -
Bonjour,
Je voudrais réaliser une requête à partir de deux autres requêtes préalablement créées; le but étant de trouver le stock final grâce aux quantités d'achat (Requete1) et aux quantités de vente (Requete2)

Ma requête 1 : SELECT Sum(Achats.quantitésA) AS [quantités achetées par produit], Produits.NomP
FROM Produits, Achats
WHERE (((Produits.CodeP)=[Achats].[CodeP]))
GROUP BY Produits.NomP;

Ma requête 2 : SELECT Sum(Ventes.QuantitésV) AS [quantités vendues par produit], Produits.NomP
FROM Produits, Ventes
WHERE (((Produits.CodeP)=[Ventes].[CodeP]))
GROUP BY Produits.NomP;

En gros je voudrais faire une soustraction : Requête 1 - Requête 2 . Mais quelles sont les normes sous Access, en langage SQL pour cela??

En vous remerciant d'avance de votre aide ...

4 réponses

  1. creadiff Messages postés 483 Statut Membre 57
     
    Pardon, j'ai omis un détail (il était un peu tard ;-), la requête correcte est :

    SELECT 
    P.NomP, 
    (( SELECT SUM(A.quantitésA) FROM Achats AS A WHERE A.CodeP=P.CodeP ) 
    - 
    (  SELECT SUM(V.QuantitésV) FROM Ventes AS V WHERE V.CodeP=P.CodeP )) 
    AS StockP 
    
    FROM Produits AS P
    1
  2. creadiff Messages postés 483 Statut Membre 57
     
    Ceci devrait fonctionner :

    SELECT
    P.NomP,
    (( SELECT COUNT(*) FROM Achats AS A WHERE A.CodeP=P.CodeP )
    -
    (  SELECT COUNT(*) FROM Ventes AS V WHERE V.CodeP=P.CodeP ))
    AS StockP
    
    FROM Produits AS P
    0
  3. chrys
     
    Merci pour la rapidité de la réponse. Cependant votre requête proposée ne fonctionne pas, enfin sa mise ne oeuvre fonctionne mais les résultats indiqués ne sont pas bon. =S

    J'ai refais mes deux premières requêtes(car il manquait la notion de date) Elles fonctionnent parfaitement, Ce qui me donne :
    Requête 1 : SELECT Produits.NomP, Sum(quantitésA) AS [quantités achetés]
    FROM Produits, Achats
    WHERE Produits.CodeP=Achats.CodeP And dateA<#10/8/2009#
    GROUP BY Produits.NomP;

    Requête 2 : SELECT Produits.NomP, Sum(quantitésV) AS [quantités vendues]
    FROM Ventes, Produits
    WHERE Ventes.CodeP=Produits.CodeP And DateV<#10/8/2009#
    GROUP BY Produits.NomP;

    Suivant ce que je veux faire, n'est ce pas possible de faire quelque chose du genre :
    SELECT Produits.NomP
    FROM Requête 1, Requête 2
    WHERE Requête1-Requête 2
    GROUP BY Produits.NomP ??
    Ou suis je obligé de répéter les termes des deux requêtes ?

    J'ai été sur divers forums et je n'ai rien trouvé :s:s

    Merci pour l'aide ... le langage SQL est capricieux !!!!!!
    0
  4. chrys
     
    Merci beaucoup ça marche !! enfin en remplacant le A du "SELECT SUM(A.QuantitésV)" par un V ^^

    D'ailleurs je ne savais pas qu'en mettant juste la première lettre de la Table, la requête pouvait fonctionner !

    Encore merci et bonne journée !! ;)
    0
    1. gnagui
       
      c'est un alias il me sembles sinon imagines que tu ai 2 tables qui commencent par la même lettre.
      0
    2. creadiff Messages postés 483 Statut Membre 57
       
      Oui, c'est l'utilité du AS.... valable dans TOUS les langages respectant un minimum la syntaxe SQL.
      0
    3. chrys
       
      ok ok ;) merci en tout cas !!
      0