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

Requêtes et SQL. Discussion :

Construire requête ou état sur champs numériques de 2 tables (requêtes) différentes


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Juin 2006
    Messages : 35
    Points : 23
    Points
    23
    Par défaut Construire requête ou état sur champs numériques de 2 tables (requêtes) différentes
    Bonjour
    J’ai les 2 requêtes suivantes :
    (1) rqtClient avec les données du client, notamment NombreMensualités et Mensualité
    (2) rqtPaiements avec les différentes mensualités à payer.

    Je voudrais construire un état, soit directement, soit passant par une requête, me montrant une liste avec le solde respectif de chaque client:
    NomClient(1), TotalAPayer(1), TotalPaiementsEffectués(2) , Solde(1+2)
    Merci d’avance

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Peux tu nous donner tous les champs des tables rqtClient et rqtPaiements !

    Sinon le client peut être plusieurs fois dans les deux tables ?
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Juin 2006
    Messages : 35
    Points : 23
    Points
    23
    Par défaut
    Salut,
    Merci pour la réponse.
    Le client ne peut être qu’une fois dans la table client, mais plusieurs fois naturellement dans la table paiements. (Relation 1 à plusieurs)
    Voici les principaux champs dans les 2 tables, resp. requêtes.

    tblClient :
    Id-Client, NuméroAuto, CléPrimaire
    Adresse, tél. etc
    NombreMensualités, numérique
    Mensualité, monétaire
    Dans rqtClient le champ calculé
    TaxesScolaires : [NbMensualités]*[Mensualité]

    tblPaiements / rqtPaiements
    Id-Paiement, NuméroAuto, CléPrimaire
    Id-Client (pour la relation 1 à plusieurs)
    Date
    Période
    Montant, monétaire
    CodeBanque


  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Et désolé pour le retard.

    Mais ta requête est du genre :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tblClient.Nom AS NomClient, tblClient.NombreMensualités*tblClient.Mensualité AS TotalAPayer, Sum(tblPaiements.Montant) AS TotalPaiementsEffectués, tblClient.NombreMensualités*tblClient.Mensualité-Sum(tblPaiements.Montant) AS Solde
    FROM tblClient INNER JOIN tblPaiements ON tblClient.Id-Client = tblPaiements.Id-Client
    GROUP BY tblClient.Nom, tblClient.NombreMensualités*tblClient.Mensualité;
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Juin 2006
    Messages : 35
    Points : 23
    Points
    23
    Par défaut
    Salut
    Oui, elle est du genre, la voici exactement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [NomElève] & " " & [PréNomElève] AS Nom, [NbMensualités]*[Mensualité] AS TaxesScolaires, tblCartes.Arrete, tblPaiements.Montant, Sum(tblPaiements.Montant) AS Total, [TaxesScolaires]-Sum([tblPaiements].[Montant]) AS Solde
    FROM tblCartes INNER JOIN tblPaiements ON tblCartes.[Id-Elèves] = tblPaiements.[Id-Elèves]
    GROUP BY tblCartes.[Id-Elèves], [NomElève] & " " & [PréNomElève], tblCartes.Instrument, tblCartes.Catégorie, tblCartes.NbMensualités, tblCartes.Mensualité, [NbMensualités]*[Mensualité], tblCartes.Ecole, tblCartes.Jour, tblCartes.Horaire, tblCartes.PremièreLecon, tblCartes.Arrete, tblCartes.Notes, tblPaiements.[Id-Paiements], tblPaiements.[Id-Elèves], tblPaiements.Date, tblPaiements.Période, tblPaiements.Montant, tblPaiements.CodeBanque
    HAVING (((tblCartes.Arrete)=No));
    Mais ainsi, celà n’a pas de sens puisqu’elle calcule le total/solde de chaque montant individuellement:
    Elève TaxesScolaires Montant Total Solde
    Elève A 1000.00 100.00 100.00 900.00
    Elève A 1000.00 150.00 150.00 850.00 etc.
    Elève B 1000.00 rien

    En plus, si un élève n’a encore rien payé (B), il ne figure pas dans la liste

    Au lieu de
    Elève A 1000.00 250.00 750.00
    Elève B 1000.00 0.00 1000.00


    Peut-être que ce n’est pas faisable avec une requête, vu que avec un formulaire en mode continu ce n’est pas faisable non plus. (formulaire avec sous-formulaire)

    Merci d’avance

  6. #6
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Essaie avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [NomElève] & " " & [PréNomElève] AS Nom, [NbMensualités]*[Mensualité] AS TaxesScolaires, tblCartes.Arrete, tblPaiements.Montant, Sum(tblPaiements.Montant) AS Total, [TaxesScolaires]-Sum([tblPaiements].[Montant]) AS Solde
    FROM tblCartes LEFT JOIN tblPaiements ON tblCartes.[Id-Elèves] = tblPaiements.[Id-Elèves]
    GROUP BY tblCartes.[Id-Elèves], [NomElève] & " " & [PréNomElève], tblCartes.Instrument, tblCartes.Catégorie, tblCartes.NbMensualités, tblCartes.Mensualité, [NbMensualités]*[Mensualité], tblCartes.Ecole, tblCartes.Jour, tblCartes.Horaire, tblCartes.PremièreLecon, tblCartes.Arrete, tblCartes.Notes, tblPaiements.[Id-Paiements], tblPaiements.[Id-Elèves], tblPaiements.Date, tblPaiements.Période, tblPaiements.Montant, tblPaiements.CodeBanque
    HAVING (((tblCartes.Arrete)=No));
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Juin 2006
    Messages : 35
    Points : 23
    Points
    23
    Par défaut
    Merci pour la réponse.
    Malheureusement presque rien a changé.
    1) Il calcule toujours pour chaque paiement séparément le total et le solde au lieu de calculer un total des montants payés par l’élève et déduire ce total des taxes scolaires.
    2) Les élèves n’ayant encore rien payés sont inclus maintenant dans la liste, mais le solde à payer n’est pas calculé. Faudra-t-il ajouter une fonction nz() ?

  8. #8
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Peux-tu faire passer tes tables ?
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

Discussions similaires

  1. Requête pour une recherche sur champs multiple d'une table
    Par fred777 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 07/10/2008, 16h33
  2. Auto Increment sur champs numérique
    Par Sami Xite dans le forum Access
    Réponses: 19
    Dernier message: 09/02/2007, 16h40
  3. Masque d'édition sur champ numérique
    Par lodan dans le forum Langage
    Réponses: 2
    Dernier message: 14/09/2006, 22h05
  4. 0 significatif sur champ numérique
    Par tucsoufle dans le forum Access
    Réponses: 5
    Dernier message: 23/08/2006, 15h52
  5. CR9:Espace sur champ numérique après concaténation
    Par nanouille56 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 07/07/2005, 09h35

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