IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Soustraction de résultats de requêtes


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 80
    Points : 52
    Points
    52
    Par défaut Soustraction de résultats de requêtes
    Bonjour à tous,

    Est-il possible de réaliser simplement la soustraction de résultats de requêtes différentes ?

    Je m'explique :

    Via la première requête, j'obtiens le nombre de produits commandés par type de produit pour une commande donnée.

    Via la deuxième requête, j'obtiens le nombre de produits déjà livrés à l'acheteur, par type de produit et par commande.

    Ce que j'aimerais donc, c'est de pouvoir afficher le résultats des produits qu'il me faut encore livrer pour une commande donnée.

    J'ai essayé de faire cela en une seule requête, mais je n'y suis pas arrivé (et je doute que ce soit possible).

    Avez-vous une idée sur la façon de procéder ?

    Merci pour vos réponse

    PS : Je précise que j'ai regardé dans les autres posts et dans la FAQ, et je n'ai pas trouvé ce que je cherchais.

  2. #2
    Membre éclairé
    Avatar de marabout
    Homme Profil pro
    Consultant E-Learning
    Inscrit en
    Août 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant E-Learning

    Informations forums :
    Inscription : Août 2006
    Messages : 650
    Points : 852
    Points
    852
    Par défaut
    Essaye ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT (Requête1)-(Requête2) as "à livrer" FROM TaTable WHERE...

  3. #3
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Pour faire quelque chose de propre, il faudrait la structure des tables

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    Voici le schéma de mes tables (j'ai enlevé les tables qui n'interviennent pas):



    Concernant les requêtes que j'ai déjà créées, les voici :
    1) Requête qui fait le total des produits commandés pour un commande particulière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCTROW COMMANDES_GROSSISTE.RefCommandeGrossiste, PRODUITS_FINIS.Nom, Sum(DETAILS_COMMANDES_GROSSISTE.QteCommandee) AS [Sum Of QteCommandee], Sum(DETAILS_COMMANDES_GROSSISTE.QteRemise) AS [Sum Of QteRemise]
    FROM PRODUITS_FINIS INNER JOIN (COMMANDES_GROSSISTE INNER JOIN DETAILS_COMMANDES_GROSSISTE ON COMMANDES_GROSSISTE.RefCommandeGrossiste = DETAILS_COMMANDES_GROSSISTE.RefCommandeGrossiste) ON PRODUITS_FINIS.RefProduitFini = DETAILS_COMMANDES_GROSSISTE.RefProduitFini
    GROUP BY COMMANDES_GROSSISTE.RefCommandeGrossiste, PRODUITS_FINIS.Nom
    HAVING (((COMMANDES_GROSSISTE.RefCommandeGrossiste)=[RefCommandeGrossiste].[Value]));
    2) Requête qui fait le total des livraisons effectuées pour une commande particulière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCTROW LIVRAISONS_GROSSISTE.RefCommandeGrossiste, PRODUITS_FINIS.Nom, Sum(LIVRAISONS_GROSSISTE.Quantite) AS [Sum Of Quantite]
    FROM PRODUITS_FINIS INNER JOIN LIVRAISONS_GROSSISTE ON PRODUITS_FINIS.RefProduitFini = LIVRAISONS_GROSSISTE.RefProduitFini
    GROUP BY LIVRAISONS_GROSSISTE.RefCommandeGrossiste, PRODUITS_FINIS.Nom
    HAVING (((LIVRAISONS_GROSSISTE.RefCommandeGrossiste)=[RefCommandeGrossiste].[value]));
    PS : Vous l'aurez sans doute compris, mais je précise quand même, le champ [RefCommandeGrossiste] est un champ de mon formulaire qui contient le numéro de référence de la commande.
    Si vous avez une idée...

  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Je te propose ceci, à toi d'adapter

    Une solution avec jointure à gauche :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT 
         D.RefCommandeGrossiste, 
         d.RefProduitFini, 
         d.QteCommandee-Nz(Sum(L.Quantite) ,0) As Reste
    FROM 
         DETAILS_COMMANDE_GROSSISTE D 
                   LEFT JOIN LIVRAISON_GROSSISTE L 
                       ON (d.RefCommandeGrossiste = L.RefCommandeGrossiste) 
                           AND (d.RefProduitFini = L.RefProduitFini)
    GROUP BY 
         d.RefCommandeGrossiste, d.RefProduitFini, d.QteCommandee;

    Une solution avec sous-requête :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SELECT 
         D.RefCommandeGrossiste, 
         D.RefProduitFini, 
         D.QteCommandee-Nz(
                          (SELECT 
                                SUM(L.Quantite) 
                           FROM 
                                LIVRAISON_GROSSISTE L 
                           WHERE 
                                L.RefCommandeGrossiste=D.RefCommandeGrossiste 
                              AND 
                                L.RefProduitFini=D.RefProduitFini
                          ),0
                          ) As rest
    FROM 
         DETAILS_COMMANDE_GROSSISTE D


    La solution 1 est préférable

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    Super, je l'ai adaptée et ça marche parfaitement !
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Soustraction de résultats de deux requêtes
    Par louay02 dans le forum Sybase
    Réponses: 4
    Dernier message: 04/04/2012, 11h48
  2. Soustraction des résultats des deux requêtes sql en access
    Par samsamo dans le forum Requêtes et SQL.
    Réponses: 31
    Dernier message: 24/09/2011, 03h18
  3. Soustraction de résultats de deux requêtes
    Par ganguill dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/05/2011, 10h29
  4. soustraction de 2 résultats de requête
    Par afrance dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/02/2010, 17h35
  5. Faire une soustraction de résultats de requête
    Par -Neo- dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/01/2010, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo