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 :

mauvais resultat [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre éprouvé
    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 : 35
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Points : 912
    Points
    912
    Billets dans le blog
    9
    Par défaut mauvais resultat
    Bonjour,

    J'aimerai afficher la liste des factures pour un client.

    Les champs affichés sont NumFact, DateFact, [le prix de chaque facture], et [le paiement de chaque facture que l'on peut effectuer en plusieurs fois].

    Dans cette requête j'ai besoin de 4 tables Facture, Produit, Ligne_Facture et Paiement.


    - Pour cette requête je m'appuie sur une vue (pas obigatoire mais j'ai trouvé que cette methode):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Sum(Quantite*PrixProdUni) AS [Prix Facture], NumFact
    FROM Ligne_Facture, Produit
    WHERE Produit.NumProd=Ligne_Facture.NumProd
    GROUP BY Ligne_Facture.Numfact;
    - voila le résultat de la vue (24 enregistrements):


    - Et voila ma requête qui me pose un problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT F.NumFact AS Numéro, F.DateFact AS [Date], px.[Prix Facture], Sum(Paiement.Montant) AS [Somme payée]
    FROM Facture AS F, Paiement, Prix_des_factures AS px
    WHERE F.NumFact=px.NumFact And F.NumFact=Paiement.NumFact And (montant>=0 Or montant Is Null)
    GROUP BY F.NumFact, F.DateFact, px.[Prix Facture];
    - voila le résultat de la requête (23 enregistrements):


    J'ai compris le problème, la facture 14 n'apparait pas dans la 2eme requête car elle n'existe pas dans la table paiement. Mais moi j'aimerai qu'elle apparaisse.. Mais ça, je ne sais pas faire

    PS: si besoin je met la base en pièce jointe.

    Merci d'avance pour votre aide
    Elros.

  2. #2
    Membre éprouvé
    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 : 35
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Points : 912
    Points
    912
    Billets dans le blog
    9
    Par défaut
    bonjour,

    j'ai essayé d'autres méthodes mais je n'ai toujours pas trouvé de solution.. Donc si quelqu'un pouvait s'intéresser à mon problème, je lui en serais fort reconnaissant.

    merci d'avance,
    elros.

  3. #3
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonjour,

    Je pense qu'en utilisant des jointures (INNER/LEFT/RIGHT JOIN) entre les tables, ça devrait donner quelque chose comme çà
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT F.NumFact AS Numéro, F.DateFact AS [Date], px.[Prix Facture], Sum(Paiement.Montant) AS [Somme payée]
    FROM (Facture AS F INNER JOIN Prix_des_factures AS px ON F.NumFact=px.NumFact) LEFT JOIN Paiement ON F.NumFact=Paiement.NumFact
    GROUP BY F.NumFact, F.DateFact, px.[Prix Facture];
    Tu ne crées pas tes requêtes avec Access ?
    En mode création (représentation graphique de la requête), on crée facilement les jointures.

    A+

  4. #4
    Membre éprouvé
    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 : 35
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Points : 912
    Points
    912
    Billets dans le blog
    9
    Par défaut
    Merci beaucoup la prochaine fois (tant que je ne maitriserais pas ces jointures en JOIN) je suivrais tes conseils.

    merci encore
    Elros.

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

Discussions similaires

  1. [MySQL] requete qui affiche mauvais resultat
    Par caro71ol dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/02/2011, 11h07
  2. [MySQL] mauvais resultats affichés sql
    Par kate59 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 09/07/2010, 18h14
  3. Mauvais resultat de nom de colonne
    Par Albat_r dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 22/05/2009, 18h08
  4. Mauvais resultat avec le type float
    Par edogawa dans le forum Langage
    Réponses: 1
    Dernier message: 17/12/2007, 16h35
  5. Pb requête : mauvais resultats
    Par lolo_bob2 dans le forum Access
    Réponses: 4
    Dernier message: 13/05/2006, 23h29

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