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 :

Problème avec GROUP BY


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut Problème avec GROUP BY
    Bonjour et merci a ceux qui me lisent.

    j'utilise un group by dans une requete et je ne comprends pas le résultat obtenu.

    en fait j'ai l'impression qu'il ne me revoi pas tous les enregistrements.

    voici ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Facture.ApplicationGroupeApplication 
    FROM Facture WHERE Facture.periode='2011 Budget' AND Facture.ClientNiveau3 = 'DCFG' 
    GROUP BY Facture.ApplicationGroupeApplication 
    ORDER BY Facture.ApplicationGroupeApplication
    Dans le champs ApplicationGroupeApplication, j'ai entre autre les valeurs suivantes
    "SCORE"
    "SCORE "

    Vous remarquerez que la deuxième valeur contient un espace en fin de chaine.

    Avec la requete ci-dessus le résultat ne me renvoi qu'une seule occurrence de SCORE et c'est celle avec l'espace ! Je n'ai pas d'occurences sur le SCORE sans espace.
    Ce sont pourtant deux chaine différentes...
    Si j'enlève le GROUP BY de la requete, j'ai bien plusieurs occurences avec les deux SCORE (avec et sans espace).

    Est-ce que quelqu'un sait ce qui se passe ?
    Merci.

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour _developpeur_,

    J'ignorais cette subtilité d'Access.

    Je pense que "SCORE" et "SCORE " sont dans le même groupe (GROUP BY).
    Essaies :
    - un Count(*) avec un WHERE = "SCORE" ;
    - un Count(*) avec un WHERE = "SCORE ".
    ==> le Count(*) de la requête que tu présentes est-il égal à la somme des deux Count(*) ?
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    Bonjour Richard et merci de ta réponse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Count(*)
    FROM Facture
    WHERE Facture.periode='2011 Budget' And Facture.ClientNiveau3='DCFG' AND ApplicationGroupeApplication='SCORE'
    renvoi 5.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Count(*)
    FROM Facture
    WHERE Facture.periode='2011 Budget' And Facture.ClientNiveau3='DCFG' AND ApplicationGroupeApplication='SCORE '
    renvoi 5.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Count(*), ApplicationGroupeApplication
    FROM Facture
    WHERE Facture.periode='2011 Budget' And Facture.ClientNiveau3='DCFG' 
    GROUP BY ApplicationGroupeApplication
    ORDER BY ApplicationGroupeApplication;
    Renvoi également 5 sur la ligne "SCORE ".

  4. #4
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Donc, Access considère que "SCORE" et "SCORE " sont dans le même groupe (GROUP BY) et te présente le résultat sous "SCORE ".

    Les 5 enregistrements comptés sont donc les mêmes (vérifies sans le GROUP BY en sélectionnant la clé).

    Il suffit de le savoir... ce qui n'était pas mon cas, je l'avoue.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    OK Richard, mais ça me pose un autre problème :

    si je met ma requete complète (avec d'autres champs)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Facture.ApplicationGroupeApplication, Facture.FamilleService, Facture.Service, Facture.CategorieApplication, Facture.CritereTri, Facture.PrixService,Facture.CoutTotalService,Facture.UOCleRepartitionClient,Facture.NombreTotalUO,facture.PrixUnitaireUO, facture.NombreUOClient,facture.QuotePartClient, facture.ClientNiveau1, facture.ClientNiveau2 
    FROM Facture 
    WHERE Facture.periode='2011 Budget' AND Facture.ClientNiveau3 = 'DCFG' 
    GROUP BY Facture.ApplicationGroupeApplication, Facture.FamilleService, Facture.CritereTri, Facture.Service, Facture.CategorieApplication, Facture.PrixService,Facture.CoutTotalService,Facture.UOCleRepartitionClient,Facture.NombreTotalUO,facture.PrixUnitaireUO, facture.NombreUOClient,facture.QuotePartClient, Facture.ClientNiveau1 , Facture.ClientNiveau2 
    ORDER BY Facture.ApplicationGroupeApplication, Facture.FamilleService, Facture.CritereTri, Facture.Service, Facture.CategorieApplication, Facture.PrixService
    Avec cette requête, j'ai mes 5 enregistrements "SCORE" et "SCORE ".
    Sauf que le group by et l'order by ne font pas leur travail or je m'en sert par la suite dans le code VBA pour faire des sous totaux par groupe d'applications.

    La j'obtiens en 1ere ligne "SCORE", ==> rupture donc 1ere sous total, en 2eme ligne "SCORE " en 3eme "SCORE " ==> rupture donc 2eme sous total, en 4eme et en 5eme a nouveau "SCORE" ==> rupture 3 eme sous total.

    Alors que j'aurais du avoir uniquement deux sous totaux. tu vois le truc ?
    si tu as une idée pour contourner, je suis preneur...

    merci

  6. #6
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Comment est alimenté le champ ApplicationGroupeApplication de Facture ?
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    avec une requete insert dont les données proviennent d'une autre table, elle meme alimentée a l'aide d'un fichier excel.

    Merci

  8. #8
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Eh bien, lors de l'alimentation de l'autre table par le fichier excel, utilises la fonction SupprEspace() de l'assistant, correspondant à Trim() en mode SQL.

    Cette fonction supprime les espaces avant et après la chaîne de caractères Excel.

    Pour l'existant, crées une requête UPDATE qui utilise cette même fonction sur le champ concerné.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    Richard, je suis confus mais je n'ai pas bien compris ta solution, la fonction SUPPRESPACE est une fonction VBA ?
    Aurais-tu la correspondance en anglais car mon poste est configuré en anglais.

    Donc si je comprends bien a la lecture du fichier excel dans mon code VBA j'utiliserai cette fonction ainsi je n'aurai pas de problème dans ma table ?

    merci beaucoup.

  10. #10
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Citation Envoyé par _developpeur_
    Donc si je comprends bien a la lecture du fichier excel dans mon code VBA j'utiliserai cette fonction ainsi je n'aurai pas de problème dans ma table ?
    ==> oui, pour les nouvelles intégrations de fichier Excel (à faire en premier, donc).

    Pour résoudre l'existant, il faut passer par une requête UPDATE avec Trim() (à faire en dernier).

    Je t'invite à consulter l'aide et Google => "fonction Trim() access" : tout y est.

    Testes la chose, sur un ancien fichier Excel, c'est tout simple.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    Richard, encore une fois merci de ton aide.

    le problème a été résolu, pour l'utilisateur il s'agit de saisir SCORE de la même manière car ça désigne en fait la même valeur.

    il faut donc plus de cohérence dans la saisie du fichier excel.

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

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