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 :

Requêt avec sum ne donne pas le bon résultat§


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de _cece
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 169
    Points : 94
    Points
    94
    Par défaut Requêt avec sum ne donne pas le bon résultat§
    J'ai vraiment besoins d'aide je me bas depuis un moment et commence à fatiguer avec la requête suivante qui ne me fournit pas les bons résultats. Je veux avoir la somme, par catégorie de produit, du chiffre d'affaire, Marge et valrevient pour les ventes fait par le client VARONE.

    Par exemple pour la sum du Ca pour une bouteille de "BLANC BOUTEILLE", le résultat devrait être de 2483, mais chez moi elle est de 80526. (Au cas ou je peut envoyer le scrip de ma BD, MySQL).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    select client.orig_texte As Société
           , produit.cstat_texte As Produit
           , sum(principal.ca)As Ca
           , sum(principal.marge) As Marge
           , sum(principal.valrevient) AS Valrevient
           , principal.date As Date
           , DAY(principal.date) As Jour
           , MONTH(principal.date) As Mois
           , YEAR(principal.date) As Année
     
    from client
          ,principal
          ,produit
     
    where client.id_client = principal.id_client
       and principal.id_produit = produit.id_produit
       and client.orig_texte = 'VARONE'
     
    group by produit.cstat_texte
     
    order by produit.cstat_texte

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Salut,

    Je ne te garantis pas que ça va résoudre ton problème, mais déjà ton GROUP BY est faux.
    Il faut regrouper sur toutes les colonnes présentes dans le SELECT et non aggrégées. (même si mysql est trop permisif...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    GROUP BY client.orig_texte
           , produit.cstat_texte
           , principal.date
           , DAY(principal.date)
           , MONTH(principal.date)
           , YEAR(principal.date)

  3. #3
    Membre régulier Avatar de _cece
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 169
    Points : 94
    Points
    94
    Par défaut
    Non ça fonctionne pas, tout s'affiche et mes categories ne sont pas regroupé et j'ai pas la sum.

    Moi se que j'aimerais c'est un résultat du type ci-dessous (première image), mais avec les sommes juste et pas l'autre c'est ce que donne ta requête.

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Sur quoi veux tu regrouper : le produit, la société OK l'année, le mois aussi ?
    mais pourquoi selectionner la date et le jour, c'est eux qui te multiplient le nombre de lignes.
    Quelle date veux tu récupérer alors ?

  5. #5
    Membre régulier Avatar de _cece
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 169
    Points : 94
    Points
    94
    Par défaut
    Je veux regrouper par produit pour la société VARONE et avoir la fameuse somme.

    La date c'était surtout parce que ma requête est utiliser pour faire un rapport BIRT et je ne voulais pas faire 2 Data Set.

    Tu pense que je devrais l'enlever ?

  6. #6
    Membre régulier Avatar de _cece
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 169
    Points : 94
    Points
    94
    Par défaut
    Bon, j'ai enlever tout ce qui avait un rapport avec la date. Mais j'ai tj pas les bon réultat. J'aimerais BLANCS BOUTEILLES = 2483 et pas 80426.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    SELECT produit.cstat_texte AS Produit
             , sum(principal.ca)AS Ca
             , sum(principal.marge) AS Marge
             , sum(principal.valrevient) AS Valrevient
    FROM client
           , principal
           , produit
    WHERE client.id_client = principal.id_client
        AND principal.id_produit = produit.id_produit
        AND client.orig_texte = 'VARONE'
     
    GROUP BY produit.cstat_texte
     
    ORDER BY produit.cstat_texte

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Ta requête ma l'air bonne syntaxiquement, t'es sûr que 2483 c'est pas la somme sur l'année 2008 seulement?

  8. #8
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par MaryPoppinsBI Voir le message
    Bon, j'ai enlever tout ce qui avait un rapport avec la date. Mais j'ai tj pas les bon réultat. J'aimerais BLANCS BOUTEILLES = 2483 et pas 80426.

    SELECT produit.cstat_texte AS Produit
    , sum(principal.ca)AS Ca
    , sum(principal.marge) AS Marge
    , sum(principal.valrevient) AS Valrevient
    FROM client
    ,principal
    ,produit
    WHERE client.id_client = principal.id_client
    AND principal.id_produit = produit.id_produit
    AND client.orig_texte = 'VARONE'
    GROUP BY produit.cstat_texte
    ORDER BY produit.cstat_texte
    il faudraiit peut être que tu group by client.orig_texte (et tu l'ajoutes dans le select bien sûr). Dis moi ce que ça donne.

  9. #9
    Membre régulier Avatar de _cece
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 169
    Points : 94
    Points
    94
    Par défaut
    Pour répondre à skuatamad : mes donnée ne porte que sur 2008

    Pour répondre à AL1986 : rien ne change

    Car pour vérifier j'avais au début fait un tableau croisé, c'est pour ça que j'arrive à une somme pour le Ca de 2483 en fonction du produit. Tandis que ma requête SQL me donne 80426.

  10. #10
    Membre régulier Avatar de _cece
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 169
    Points : 94
    Points
    94
    Par défaut
    J'ai réussi à quelque chose sur une autre requete en ajoutant un "INNER JOIN".

  11. #11
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Quelle est la structure de vos tables ?

    Il semblerait que vos jointures ne soient pas assez fortes et génèrent des doublons.

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

Discussions similaires

  1. Group by et SUM ne me donne pas le bon résultat
    Par CLion dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/05/2015, 12h10
  2. [Excel 2007-2010]Requête SQL qui ne donne pas le bon résultat
    Par Davidw dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/10/2012, 11h48
  3. Fonction Estnull et Rechdom ne donne pas le bon résultat
    Par Amstra dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/01/2010, 14h19
  4. Réponses: 8
    Dernier message: 23/06/2009, 20h31
  5. Mon site ne donne pas un bon résultat avec firefox
    Par beegees dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 14/08/2007, 16h46

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