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 :

problème avec group by et sum


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 106
    Points : 70
    Points
    70
    Par défaut problème avec group by et sum
    Bonjour,

    J'ai un petit souci avec une requete SQL nécessitant un group by et un sum, mon problème est le suivant :

    En gros je fais une requete de ce type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select sum(p.nombreDeMeubles)
    from MAISON m
    join PIECE p on p.maisonId=m.maisonId
    join AUTRETABLE on ...
    where ...
    group by m.maisonId, ...
    (La vrai requete est beaucoup plus complexe et n'a rien a voir avec ça mais le problème est le même)

    Je veux donc le nombre de meubles par pièces, mais le souci est que la jointure avec "AUTRETABLE" génère plusieurs tuples par maison et donc le nombre de meubles par pièces est multiplié par ce nombre de tuples. Le group by ne permet pas apparemment de gérer les tuples générés par les jointures... y a-t-il un moyen d'obtenir réellement le nombre de meubles par pièce ?

    Merci beaucoup!

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Le Group by fait très bien son travail, le problème étant plutôt votre requête (ou votre modélisation) qui n'est pas pensé pour servir votre besoin.

    Donc mettez-nous plus d'indice concernant les données, les def de tables et la nécessité de faire votre jointure sur les "AUTRETABLE " pour que l'on puisse répondre correctement à votre demande


    Sinon au vu du problème, connaissez vous la clause "EXISTS" ?

    Elle pourrai être utilisée à la place de certaine jointure. Ceci éviterai des multiplications de tuple là où vous n'en avez pas besoin.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 106
    Points : 70
    Points
    70
    Par défaut
    Merci pour votre réponse rapide punkoff.

    En fait je viens de trouver une solution, il suffit de rajouter un distinct dans sum(distinct ...) pour éviter la multiplication pour les tuples. Mais effectivement je vais voir pour rajouter des clauses EXISTS ça m'évitera les tuples générés.

    bonne journée!

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Non c'est une mauvaise solution.

    Si dans deux pièces distinctes vous avez le même nombre de meuble, vous n'allez compter ce nombre qu'une fois au lieu de deux.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 106
    Points : 70
    Points
    70
    Par défaut
    bien vu! Je vais faire plusieurs requêtes je pense...

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    À priori, pas besoin de faire plusieurs requêtes.

    Fournissez un jeu de test simple qui représente votre problème, on trouvera une solution.

Discussions similaires

  1. problème avec GROUP BY
    Par benjisan dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 14/06/2007, 11h48
  2. [XI] problème avec groupe sur un champ trié par origine ?
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 11/04/2007, 15h31
  3. Problème avec GROUP BY
    Par Korskarn dans le forum Langage SQL
    Réponses: 6
    Dernier message: 07/03/2006, 14h35
  4. Problème avec group by...
    Par gdido dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/07/2005, 09h34
  5. [débutant] problème avec Group by
    Par Amenofis dans le forum Débuter
    Réponses: 5
    Dernier message: 25/05/2005, 09h57

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