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

Langage SQL Discussion :

[Access] Manque d'idées sur une requête


Sujet :

Langage SQL

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut [Access] Manque d'idées sur une requête
    Voila, je n'ai aucune idée de comment tomber sur le résultat souhaité.

    Je m'explique :
    J'ai une table avec une serie de montant qui sont assoiciés avec un numéro de compte général et un numéro de compte client.

    Ma requête donne ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT M.MVT_GEN,M.MVT_PAR,Round( SUM(MVT_MNT),2) FROM D_MVT As M
    WHERE M.MVT_GEN = 440100
    GROUP BY M.MVT_GEN,M.MVT_PAR 
    HAVING SUM(MVT_MNT) > 0;
    Le résultat renvoyé par la requete est en gros, la somme de chaque comptes clients créditeurs dans le compte général 440100.

    Moi, j'aimerai que le résultat final soit la somme de se résultat là
    Donc la somme du total de chaque clients créditeurs.

    Comment faire sans faire plusieurs requêtes et avoir recoure à une table temporaire (et oui, je suis sous Access )

    Merci pour tout

  2. #2
    Membre habitué

    Inscrit en
    Octobre 2002
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 139
    Points : 177
    Points
    177
    Par défaut
    Salut,

    je ne comprend pas pourquoi tu ajoutes la colonne M.MVT_PAR, qui doit correspondre à compte particulier, dans ta requête puisque tu veux que ta requête fonctionne avec le compte général. Je pense que si tu transformes ta requête de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT M.MVT_GEN,Round( SUM(MVT_MNT),2) FROM D_MVT As M 
    WHERE M.MVT_GEN = 440100 
    GROUP BY M.MVT_GEN
    Elle devrait te retourner le montant du compte général 440100.

    krest

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Merci de t'interresser à mon problème.
    En ce qui concerne ta requête, elle paraît bonne mais ne l'ai pas.

    Explication :
    Ma table
    MVT_GEN-----MVT_PAR-----MVT_MNT
    440100********10******* 300.00
    440100********5******* -1305.00
    440100********5******* 550.00
    440100********5******* -652.00
    440100********10******* -6300.00
    440100********10******* 3100.00
    Si j'applique mon résultat souhaité, j'aurai
    Client n° 10
    300-6300+3100 = -2900
    Client n° 5
    -1305+550-652 = -1407
    Donc là, ces deux sommes là iront dans la partie débit du compte 440100

    Ta technique sous-entend que faire la somme des montants débits qui iront dans le compte 440100(débit) et la somme des montants crédits
    qui iront dans le compte 440100 coté crédit.

    Donc, ton résultat donnerait:
    ------------440100-----------------
    --DEBIT--------------CREDIT-----
    -1305.00********* 300.00
    -652.00********** 550.00
    -6300.00********* 3100.00
    et dans mon cas
    ------------440100-----------------
    --DEBIT--------------CREDIT-----
    -2900(Client n°10)*************
    -1407(Client n°5)**************
    J'espere avoir été clair (dur dur avec de la compta )

  4. #4
    Membre habitué

    Inscrit en
    Octobre 2002
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 139
    Points : 177
    Points
    177
    Par défaut
    en fait j'ai pas bien compris ce que tu veux faire . peux tu réexpliquer stp

    euh enfait tu veux le montant global de tous les soldes créditeurs positifs. C'est ça????

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    :o le contraire m'aurait étonné....

    J'ai une table où chaque écriture comptable est mentionnée.
    Dans cette table est mmentionnée le compte général, le compte client, le montant de l'écriture.

    Mon résultat doit être la somme des sommes des comptes clients* débiteurs et la somme des sommes des comptes clients créditeurs.
    Si la somme d'un compte client est négative, elle ira dans la partie débit. Sinon , dans la partie crédit.

    C'est plus clair là ?

    *La somme des montant de la table qui ont le meme client

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3 338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 338
    Points : 4 657
    Points
    4 657
    Par défaut
    Et un truc comme ça à tous hasard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT D_MVT.MVT_GEN, D_MVT.MVT_PAR, IIf(Sum([MVT_MNT])<0,Sum([MVT_MNT]),0) ASbit, IIf(Sum([MVT_MNT])>0,Sum([MVT_MNT]),0) AS Crédit
    FROM D_MVT
    GROUP BY D_MVT.MVT_GEN, D_MVT.MVT_PAR;

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    En effet , ca va mais... il me faut juste la somme de la colone débit et la somme de la colone crédit.

    C''est tout, rien de plus

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3 338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 338
    Points : 4 657
    Points
    4 657
    Par défaut


    Ma requete donne exactement ce que tu veux :

    ------------440100-----------------
    --DEBIT--------------CREDIT-----
    -2900(Client n°10)*************
    -1407(Client n°5)**************

  9. #9
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Soyez indulgent. Pas facile d'expliquer de la compta

    En effet, mon exemple n'est pas complet , j'aurai du mettre le somme...


    Enfin bon, je vais dire que le problème est résolu puisque j'obtiens quand meme le liste de tout les montants. Je recalcule dynamiquement les sommes par mon programme (je pensais que ca allait être lent -->he bein NON ! ).

    Donc, un grand merci pour votre aide.
    Désolé pour le dérangement

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3 338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 338
    Points : 4 657
    Points
    4 657
    Par défaut
    Ok j'ai capté ;-)

    Juste une toute petite question pourquoi ne pas faire une requete imbriqué ?

    Du type :
    Requête1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT D_MVT.MVT_GEN, D_MVT.MVT_PAR, IIf(Sum([MVT_MNT])<0,Sum([MVT_MNT]),0) ASbit, IIf(Sum([MVT_MNT])>0,Sum([MVT_MNT]),0) AS Crédit
    FROM D_MVT
    GROUP BY D_MVT.MVT_GEN, D_MVT.MVT_PAR;
    REQUETE2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Requête1.MVT_GEN, Sum(Requête1.Débit) AS SommeDeDébit, Sum(Requête1.Crédit) AS SommeDeCrédit
    FROM Requête1
    GROUP BY Requête1.MVT_GEN;
    Je t'ai pas proposé cela tous de suite comme tu as précisé que tu ne voulais pas, mais bon on sait jamais ;-)

  11. #11
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Bein oui, j'aurai pu faire cela aussi mais j'aurai été obligé de passer par une table intermediaire.
    J'aime pas trop les table intermediaire. Ca fait grossir la base de données trop vite si l'utilisation de cette technique est fréquente.

    Merci quand même.

    (J'aurai du prendre un sgdb autre qu' Access , style MSDE, My SQL...
    Mais bon, un peu trop tard....)

    A+

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3 338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 338
    Points : 4 657
    Points
    4 657
    Par défaut
    Attention c'est pas une table intermédiaire !

    Ma technique est l'équivalent d'une vue en SGBD Pur et non d'une table temporaire.

  13. #13
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Citation Envoyé par Gaël Donat
    Attention c'est pas une table intermédiaire !

    Ma technique est l'équivalent d'une vue en SGBD Pur et non d'une table temporaire.
    Avec Microsoft JET 4, m'étonnerai .

    J'utilise un Base Access avec ADO (DELPHI)

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

Discussions similaires

  1. [AC-2003] Access plante sur une requête avec 2 IN
    Par Bobble dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 24/04/2012, 08h31
  2. [access 2003/VBA/SQL] Erreur d'execution 3201 sur une requête.
    Par Milyshyn76 dans le forum VBA Access
    Réponses: 6
    Dernier message: 02/05/2008, 09h04
  3. erreur 00905 sur une requête provenant d'access
    Par amamildor dans le forum SQL
    Réponses: 4
    Dernier message: 09/10/2007, 14h05
  4. [ACCESS] Je bloque sur une requête...
    Par portu dans le forum Langage SQL
    Réponses: 8
    Dernier message: 16/02/2006, 10h33
  5. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 01h17

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