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 :

Doublons sur regroupement SQL


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Conseil aux entreprises
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Conseil aux entreprises
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Points : 26
    Points
    26
    Par défaut Doublons sur regroupement SQL
    Bonsoir à tous.

    Je suis entrain de travailler sur une base de données de facturation.

    J'ai une table clients, une table prestations, une table factures et une table lignesfacture, toutes liées entre elles par des relations un à plusieurs.

    Je souhaite extraire la liste des clients pour lesquels une facture a été éditée pour un mois donné, avec le nombre d'unités facturées. Je fais donc appel à l'Id client, le nom du client, le prénom du client, la date de la facture et la quantité facturée. je fais un regroupement sur l'Id client, un critère Mois([DateFacture]) = [Quel mois ?], et un compte sur le champ quantité. Seulement, j'ai encore des doublons sur les noms de client.

    Quelqu'un voit une explication à mon problème ?

    Merci par avance pour votre aide.

    Cordialement.

    PME Diag

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 32
    Points : 24
    Points
    24
    Par défaut
    Dans ta requete, je crois qu'il faut créer une colonne qui cumule le Nom et le Prenom des clients, en effectuant un tri de regroupement sur ces valeurs.
    De cette manière, les factures ayant le même nom+Prenom de client seront regroupées sous un seul nom.

    Je ne suis pas sur que c’était la question, mais c'est comme ça que je l'ai comprise :s

  3. #3
    Membre actif
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Mars 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Mars 2009
    Messages : 177
    Points : 270
    Points
    270
    Par défaut
    Bonsoir ,

    Essaye d'utiliser 2 requêtes:
    la 1ere: un sélect sur tables factures avec 3 champs seulement: idclient, mois facture et quantité et avec regroupement pour les 2 premiers champs et somme pour le 3 eme.

    la 2ème: un sélect sur table client pour extraire le nom/prénom a partir de l'idclient résultant de la 1ere requête

    cordialement

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Conseil aux entreprises
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Conseil aux entreprises
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    Bonjour à tous les deux.

    Merci beaucoup pour vos réponses claires et rapides.

    Je regarde cela de plus près ce soir et je vous tiens au courant.

    Cordialement.

    PME Diag

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Conseil aux entreprises
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Conseil aux entreprises
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    Bonsoir.

    Alors, pour mon problème, j'ai créé une requête qui regroupe les champs NomClient&" "&PrenomClient, le champ DateFacture et le champ Quantite. J'ai ensuite créé une requête croisée basée sur cette requête puis un état servant à afficher le résultat de cette requête. Avec quelques champs totaux en plus, le résultat est acceptable et je peux le conserver.

    En revanche, j'ai un autre problème. Je souhaite réaliser un état qui affiche la quantité facturée sur toute l'année pour chaque client, un récapitulatif annuel en quelque sorte. Je ne sais pas trop comment m'y prendre.

    Si quelqu'un peut m'aiguiller sur la bonne piste, son aide est la bienvenue.

    Cordialement.

    PME Diag

  6. #6
    Membre actif
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Mars 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Mars 2009
    Messages : 177
    Points : 270
    Points
    270
    Par défaut
    Bonsoir,

    Une requete avec regroupement pour les champs nom&prenom et année(date_facture) et somme pour la quantité devrait faire l'affaire

    cordialement

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Conseil aux entreprises
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Conseil aux entreprises
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    Bonsoir.

    Merci pour ta réponse très rapide reedy. Je vais tester cela et je poste pour te tenir au courant.

    Cordialement.

    PME Diag

  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
    Bonjour PMEDiag et Reedy,

    Je me permets de m'immiscer...

    .../... regroupement pour les champs nom&prenom .../...
    ==> attention au regroupement par des champs non uniques. Deux clients s'appelant Jean Martin seront regroupés !... peu probable, d'accord, mais, d'un point de vue conceptuel, c'est une erreur.

    Il est préférable de regrouper par Id_Client, comme proposé précédemment par Reedy, et aller retrouver les noms/prénoms dans un second temps.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Conseil aux entreprises
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Conseil aux entreprises
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    Bonjour à tous.

    Merci Richard pour ton aide. Si je comprends bien et que je résume :

    Je créé une requête pour définir les champs et les calculs dont j'ai besoin (IdClient, DateFacture et Quantite, avec un regroupement sur l'IdClient, un critère sur DateFacture et une somme sur Quantite).

    Ensuite je créé mon état annuel et dans la source, j'affecte à un champ que je nomme identite la valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomClient&" "&PrenomClient
    Je demande enfin à l'état de m'afficher un en-tête et pied de groupe sur l'IdClient afin qu'un état soit imprimé par client différent.

    Est-ce que cette démarche vous semble crédible ? Sinon comment pense-vous que je dois procéder.

    Merci d'avance.

    Cordialement.

    PME Diag

  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
    Eh bien, si tu n'as que ces deux champs à ajouter, autant le faire dans le regroupement :
    Citation Envoyé par PMEDiag
    Je créé une requête pour définir les champs et les calculs dont j'ai besoin (IdClient, NomClient, PrenomClient, DateFacture et Quantite, avec un regroupement sur l'IdClient, NomClient, PrenomClient, un critère sur DateFacture et une somme sur Quantite).
    Avec cette requête en source de données de ton état, tu devrais obtenir ce que tu souhaites.
    Mais bon, je ne connais ni VBA ni la conception d'état... mais il s'agit que d'une mise en forme d'une source de données correcte.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Conseil aux entreprises
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Conseil aux entreprises
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    Re tout le monde.

    Alors, voilà où j'en suis :

    J'ai créé un état en mode création. La source de cet état est la requête suivante : IdClient, NomClient&" "&PrenomClient, AdresseClient, CPClient&" "&VilleClient et Quantite. Je réalise un groupement sur l'IdClient, l'identité, l'adresse et la localité du client, et je demande la somme des quantités (nombre d'heures facturées).

    Le résultat est plutôt correct. Avec un saut de page après section, cela me permet d'obtenir un état par client avec la somme des heures facturées.

    Là où cela se corse, c'est lorsque je souhaite faire intervenir une notion de date. J'ajoute le champ DateFacture à la requête et je mets comme critère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Année([DateFacture])=[Quel année ?]
    Je perds alors le regroupement sur l'IdClient et sur l'identité du client et je me retrouve avec plusieurs états par client, en fonction du nombre de factures éditées pour ce client.

    Comment puis-je inclure un critère d'année dans ma requête tout en faisant la somme des heures facturées pour un client sur cette année seulement ?

    Merci d'avance.

    Cordialement.

    PME Diag

  12. #12
    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,

    Je ne vois pas pourquoi le fait de demander la saisie d'une année interférerait dans l'état.

    Ton test Année([DateFacture])=[Quel année ?] doit être dans la clause WHERE ("Où", dans l'assistant).

    Vérifies. Sinon, postes l'image écran de ta requête groupée (via l'assistant).

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Conseil aux entreprises
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Conseil aux entreprises
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    Bonjour Richard.

    Je pense avoir décelé d'où vient mon problème : dans ma requête, je fais appel au champ DateFacture sur lequel j'applique un critère Année([DateFacture])=[Quelle année ?].

    Il faudrait au contraire que je fasse appel à un champ de type Expr1 = Année([DateFacture]).

    Ensuite, au moment de l'appel de mon état avec une macro sur un bouton, je passe dans la condition Where le paramètre année récupéré dans une textbox par exemple.

    Est-ce que cela te semble judicieux et réalisable ?

    Merci beaucoup.

    Cordialement.

    PME Diag

  14. #14
    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
    Je ne comprends pas trop.

    Si la source de données de ton état est la requête en question, alors la prise en compte du paramètre saisi dans cette requête ne devrait pas poser de problème.

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Conseil aux entreprises
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Conseil aux entreprises
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    Re Richard.

    J'avoue ne pas bien comprendre non plus pourquoi cela ne fonctionne pas.

    Puis-je t'envoyer ma BDD par mail en t'expliquant clairement ce que je souhaite faire afin que tu puisse m'aiguiller vers la bonne méthode s'il te plait ?

    Cordialement.

    PME Diag

  16. #16
    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 PMEDiag
    Puis-je t'envoyer ma BDD par mail .../...
    ==> je préfère rester sur le forum.

    Sinon, comme demandé précédemment, postes l'image graphique de la requête qui est la source de données de ton état.

  17. #17
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut Un point d'ordre
    Un point d'ordre pour les participants;
    il est preferable d'illustrer les requetes SQL .

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Conseil aux entreprises
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Conseil aux entreprises
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    Bonsoir à tous.

    Richard : vois en pièce jointe une capture d'écran de ma requête alimentant l'état.

    Boussafi : bien noté, je prendrai dorénavant l'habitude d'illustrer mes questions portant sur des requêtes avec une capture d'écran.

    Merci pour votre aide.

    Cordialement.

    PME Diag
    Fichiers attachés Fichiers attachés

  19. #19
    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 Richard_35
    Ton test Année([DateFacture])=[Quel année ?] doit être dans la clause WHERE ("Où", dans l'assistant).
    ==> tu n'as pas sélectionné "Où", mais "Expression" !
    Remplaces "Expression" par "Où", donc.

  20. #20
    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 PMEDiag,

    Citation Envoyé par PMEDiag
    .../... sur une page sur deux, le fonds du détails est grisé. Comment puis-je enlever cela ?
    ==> je ne sais pas. Je ne connais pas la gestion des états Access.

    Postes, peut-être, juste cette question dans le forum IHM, qui inclus la partie "Etat".

Discussions similaires

  1. Quel est le meilleur livre sur le SQL ?
    Par Marc Lussac dans le forum Livres
    Réponses: 78
    Dernier message: 03/10/2019, 21h04
  2. Eviter les doublons sur un champ SQL Serveur 2005
    Par crashyear dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2006, 09h02
  3. [SQL/access] Doublon sur un champ
    Par kor dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/01/2005, 12h21
  4. Infos sur SYBASE SQL Anywhere Studio
    Par Thomad dans le forum Sybase
    Réponses: 2
    Dernier message: 28/04/2004, 17h12
  5. Réponses: 2
    Dernier message: 19/08/2003, 19h04

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