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 :

Liste des factures payées entièrement ou non. [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre émérite
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Billets dans le blog
    9
    Par défaut Liste des factures payées entièrement ou non.
    Bonsoir,

    J'ai un problème pour une requête de mon application de facturation.
    J'aimerai avoir la liste des Clients ( Numéro, Nom, Prénom, Tel) qui ont réglé entièrement ou non leur(s) facture(s)

    Voila le schéma Access :


    Voila la requête pour trouver le prix des factures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Sum(Quantite*PrixProdUni) AS [Prix Facture]
    FROM Ligne_Facture, Produit
    WHERE Produit.NumProd=Ligne_Facture.NumProd
    GROUP BY Ligne_Facture.Numfact;
    Et j'ai essayé de faire la requête pour avoir les factures non payés mais j'obtient une erreur :
    ("Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée " " comme une partie de la fonction d'agrégat")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT Client.NumCli AS Numéro, NomCli AS Nom, PrenomCli AS Prénom, TelCli AS Tel
    FROM Client, Ligne_Facture, Produit, Paiement, Facture
     
    WHERE Client.NumCli=Facture.NumCli 
    And Facture.NumFact=Ligne_Facture.NumFact 
    And Produit.NumProd=Ligne_Facture.NumProd 
    And Facture.NumFact=Paiement.NumFact
     
    GROUP BY Client.NumCli, NomCli, PrenomCli, TelCli
     
    HAVING Montant < ALL (SELECT Sum(Quantite*PrixProdUni)
                          FROM Ligne_Facture, Produit 
                          WHERE Produit.NumProd=Ligne_Facture.NumProd 
                          GROUP BY Ligne_Facture.Numfact);
    Si vous avez une idée
    merci d'avance,
    Elros.
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton

    Venez faire un petit tour sur mon blog : Elros - Bienvenue dans le monde de la Business Intelligence

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 598
    Billets dans le blog
    67
    Par défaut
    Salut,

    Il faut peut-être ramener la sous requête dans la requête principal, car pour le moment je ne vois pas à quoi te sert le group by ?

    Avec un truc du genre:
    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
    SELECT Client.NumCli AS Numéro, NomCli AS Nom, PrenomCli AS Prénom, TelCli AS Tel, Facture.NumFact, Sum(Quantite*PrixProdUni) AS Total
    FROM Client, Ligne_Facture, Produit, Paiement, Facture As F
     
    WHERE Client.NumCli=Facture.NumCli 
    AND Facture.NumFact=Ligne_Facture.NumFact 
    AND Produit.NumProd=Ligne_Facture.NumProd 
    AND Facture.NumFact=Paiement.NumFact
     
    GROUP BY Client.NumCli, NomCli, PrenomCli, TelCli, Facture.NumFact;
     
    HAVING Sum(Montant) <  (SELECT SUM(Quantite*PrixProdUni)
                        FROM Ligne_Facture, Produit
                        WHERE (Produit.NumProd=Ligne_Facture.NumProd) and (Ligne_Facture.NumFact=F.NumFact)
                        GROUP BY Ligne_Facture.Numfact);

    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre émérite
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Billets dans le blog
    9
    Par défaut
    Merci de m'accorder du temps , mais j'obtiens cette erreur avec ta requête :
    ("Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée "Sum(Quantite*PrixProdUni)" comme une partie de la fonction d'agrégat")

    Juste avant de m'avoir repondu j'ai essayé comme ceci et j'obtient la liste des factures qui sont réglé et en cours de règlement ( le client à commencé à payé ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT DISTINCT Client.NumCli AS Numéro, NomCli AS Nom, PrenomCli AS Prénom, TelCli AS Tel, Facture.NumFact
    FROM Client, Ligne_Facture, Produit, Paiement, Facture
    WHERE Client.NumCli=Facture.NumCli 
    And Facture.NumFact=Ligne_Facture.NumFact 
    And Produit.NumProd=Ligne_Facture.NumProd 
    And Facture.NumFact=Paiement.NumFact
    And Montant < ANY (SELECT SUM(Quantite*PrixProdUni)
                        FROM Ligne_Facture, Produit
                        WHERE Produit.NumProd=Ligne_Facture.NumProd 
                        GROUP BY Ligne_Facture.Numfact);
    j'ai le même résultat avec celle-ci ( votre requête sans le HAVING) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT Client.NumCli AS Numéro, NomCli AS Nom, PrenomCli AS Prénom, TelCli AS Tel, Facture.NumFact, Sum(Quantite*PrixProdUni) AS Total
    FROM Client, Ligne_Facture, Produit, Paiement, Facture
     
    WHERE Client.NumCli=Facture.NumCli 
    AND Facture.NumFact=Ligne_Facture.NumFact 
    AND Produit.NumProd=Ligne_Facture.NumProd 
    AND Facture.NumFact=Paiement.NumFact
     
    GROUP BY Client.NumCli, NomCli, PrenomCli, TelCli, Facture.NumFact;
    merci d'avance,
    Elros.
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton

    Venez faire un petit tour sur mon blog : Elros - Bienvenue dans le monde de la Business Intelligence

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 598
    Billets dans le blog
    67
    Par défaut
    Si Tu veux la liste des clients qui ont commencé à régler ou qui ont entièrement
    réglé ton problème n'est-il pas résolu ?
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Membre émérite
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Billets dans le blog
    9
    Par défaut
    J'ai 24 factures que l'on peut régler en une ou plusieurs fois.
    Dans ces 24 factures :
    - 20 sont payées,
    - 3 sont en cours de paiement (le client a déjà versé un acompte),
    - 1 est n'est pas réglée (le client n'a pas versé d'acompte).

    Ce que j'aimerai faire c'est :
    - Une requête pour trouvé les clients qui ont payé leur(s) facture(s),
    - Une requête pour trouvé ceux qui n'ont pas réglé Entièrement leur(s) facture(s).

    Désolé si je m'exprime mal.
    Merci d'avance pour votre aide,
    Elros.
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton

    Venez faire un petit tour sur mon blog : Elros - Bienvenue dans le monde de la Business Intelligence

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 598
    Billets dans le blog
    67
    Par défaut
    Tu peux mettre ta base en pièce jointe ?
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  7. #7
    Membre émérite
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Billets dans le blog
    9
    Par défaut
    voila fichier zippé en pièce jointe

    Merci de votre aide
    Elros.
    Fichiers attachés Fichiers attachés
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton

    Venez faire un petit tour sur mon blog : Elros - Bienvenue dans le monde de la Business Intelligence

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 598
    Billets dans le blog
    67
    Par défaut
    ReBonsoir,

    Voici la requête pour ceux qui n'ont pas payé leur facture (y compris celui qui n'a rien payé)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Client.NumCli AS Numéro, Client.NomCli AS Nom, Client.PrenomCli AS Prénom, Client.TelCli AS Tel, F.NumFact
    FROM (Client INNER JOIN Facture AS F ON Client.NumCli = F.NumCli) LEFT JOIN Paiement ON F.NumFact = Paiement.NumFact
    GROUP BY Client.NumCli, Client.NomCli, Client.PrenomCli, Client.TelCli, F.NumFact
    HAVING (((Sum(Paiement.Montant))<(SELECT SUM(Quantite*PrixProdUni)  FROM Ligne_Facture, Produit  WHERE Produit.NumProd=Ligne_Facture.NumProd  AND Ligne_Facture.NumFact=F.NumFact  ))) OR (((Sum(Paiement.Montant)) Is Null));


    colle le code dans le sql d'une requête et teste:

    PASSE TES CHAMPS (Prix, Montant..) AU FORMAT MONETAIRE,
    C'EST FAIT POUR CA !


    Pour l'autre utilise la requête complémentaire: client ou factures qui ne sont pas dans cette requête :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ... where NumFact not in (select NumFact from..)


    Ou alors utilise cette requête:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Client.NumCli AS Numéro, Client.NomCli AS Nom, Client.PrenomCli AS Prénom, Client.TelCli AS Tel, F.NumFact
    FROM (Client INNER JOIN Facture AS F ON Client.NumCli = F.NumCli) LEFT JOIN Paiement ON F.NumFact = Paiement.NumFact
    GROUP BY Client.NumCli, Client.NomCli, Client.PrenomCli, Client.TelCli, F.NumFact
    HAVING (((Sum(Paiement.Montant))=(SELECT SUM(Quantite*PrixProdUni)  FROM Ligne_Facture, Produit  WHERE Produit.NumProd=Ligne_Facture.NumProd  AND Ligne_Facture.NumFact=F.NumFact  )));


    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  9. #9
    Membre émérite
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Billets dans le blog
    9
    Par défaut
    merci beaucoup pour ton aide

    Il faut que je travail sur les différentes jointures parce qu'il y a des trucs que je ne connaissait pas..

    Encore merci
    Elros.
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton

    Venez faire un petit tour sur mon blog : Elros - Bienvenue dans le monde de la Business Intelligence

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 598
    Billets dans le blog
    67
    Par défaut
    De rien:

    Pour comprendre les jointures entre les tables tu peux consulter ceci:
    Comprendre les jointures dans Access

    et pour faire référence à un champ de la requête principale dans la sous-requête, tu peux regarder:

    ces exemples dans les sources.

    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  11. #11
    Membre émérite
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Billets dans le blog
    9
    Par défaut
    Merci énormément de m'avoir aidé
    Elros.
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton

    Venez faire un petit tour sur mon blog : Elros - Bienvenue dans le monde de la Business Intelligence

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

Discussions similaires

  1. Réponses: 42
    Dernier message: 29/12/2015, 12h03
  2. Requête: Liste des Factures impayées
    Par mameziane dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 01/11/2011, 11h55
  3. Réponses: 6
    Dernier message: 05/06/2006, 22h59
  4. Liste des foreigns key non indexés
    Par soazig dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/05/2006, 17h50
  5. [script] liste des pays FR / DE
    Par Husqvarna dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 12/03/2005, 18h39

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