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 :

Requete somme qui pose des problèmes


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 39
    Points : 18
    Points
    18
    Par défaut Requete somme qui pose des problèmes
    Bonjour, je m'adresse à vous car j'ai un problème pour faire la somme de champs d'une table.

    Je dispose de 4 tables : Dotations, Emprunt ( qui regroupe des dotations ), Equipe, Secteur ( qui regroupe des équipes ).

    Chaque dotation à un prix, et les emprunts font la somme de ses dotations, jusque là tout va bien. Une dotation est associé à une équipe.

    Je souhaite dresser une liste du cout total des emprunts pour chaque secteur, donc la somme des emprunts de toutes les équipes desdit secteurs. Hors lorsque je fais la somme, la somme des dotations qui est enregistré dans l'emprunt de l'équipe est multiplié par le nombre de dotations de cet emprunt. Pour être un peu plus explicite voici un exemple : L'équipe 1 associée au Secteur X a emprunté une paire de chaussure à 10€ et une blouse à 5€, la somme de l'emprunt et donc de 15€ mais ma requète me renvoi 15 x ( le nombre de dotations, donc 2), je récupère donc 30.

    Voici ma requète, j'ai sûrement dû commettre une erreur mais je ne la trouve pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT s.Nom, s.Directeur, Sum(em.[Prix total]) AS Coût 
    FROM SECTEUR AS s, EQUIPE AS eq, EMPRUNT AS em, DOTATION AS d
    WHERE s.Nom=eq.Secteur 
    AND d.NumeroFacture=em.NumeroFacture  
    AND d.Equipe=eq.Nom 
    AND em.Date>=dateDeb 
    AND em.Date<=dateFin 
    GROUP BY s.Nom, s.Directeur;
    Les champs dateDeb et dateFin sont remplies dans mon formulaire.

    Merci d'avance,
    Shakallica

  2. #2
    Membre actif Avatar de lucienkany
    Profil pro
    Développeur
    Inscrit en
    Janvier 2004
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2004
    Messages : 257
    Points : 220
    Points
    220
    Par défaut
    Bonjour,

    Dotations, Emprunt ( qui regroupe des dotations )
    Si j'ai bien compris, Un Emprunt peut avoir plusieurs dotations.

    Lucien.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 39
    Points : 18
    Points
    18
    Par défaut
    Oui, la table emprunt m'a servi pour lister les dotations car les paiments se font pas groupe, enfin là n'est pas la question. Mais oui, un emprunt peut avoir plusieurs dotations

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour Shacallica,
    Je crois bien que ton problème est que tu ne mets pas de relation dans ta requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM SECTEUR AS s, EQUIPE AS eq, EMPRUNT AS em, DOTATION AS d
    Ce qui cause une multiplication. Je ne connais pas la structure de tes tables mais la requête pourrait ressembler à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM EQUIPE  INNER  JOIN SECTEUR ON EQUIPE.NUMERO_SECTEUR = SECTEUR.NUMERO_SECTEUR
    Et ainsi de suite pour toutes les tables impliquées dans ta requête.

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 740
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 740
    Points : 57 540
    Points
    57 540
    Billets dans le blog
    42
    Par défaut
    bonsoir,

    en fait les jointures sont mélangées avec les filtres dans la condition WHERE, pas facile à lire

    Du coup le comportement de la requête me semble logique et lucienkany a dû flairer l'embrouille, [prix total] qui est dans la table EMPRUNT est déjà la somme des dotations.
    Citation Envoyé par Shakallica
    la somme des dotations qui est enregistrée dans l'emprunt de l'équipe...
    En faisant la jointure avec les dotations, [prix total] est dupliqué autant de fois qu'il y a de dotations et la somme est doublée, triplée, etc.

    Pourquoi ne pas retirer tout simplement la table DOTATION de la requête, elle ne me semble pas utile ici.
    Tu en profiteras pour rédiger la requête avec les assistants qui te feront de belles jointures bien comme il faut avec INNER JOIN

Discussions similaires

  1. InstanceContext qui pose des problème
    Par Jean-Philippe André dans le forum Windows Communication Foundation
    Réponses: 13
    Dernier message: 24/02/2012, 09h29
  2. windows defender me pose des problémes
    Par lalouvesijetattrape dans le forum Windows Vista
    Réponses: 4
    Dernier message: 30/06/2008, 10h03
  3. requete update qui pose problème
    Par kirian dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/02/2007, 11h20
  4. [FreeBSD] pkgdb -F pose des problèmes
    Par piouPiouM dans le forum BSD
    Réponses: 4
    Dernier message: 22/03/2005, 12h15
  5. RegCreateKeyEx me pose des problèmes sous XP
    Par Morgatte dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 08/07/2004, 05h28

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