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 COUNT et GROUP BY : dois-je passer par une req intermédiaire


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 87
    Points
    87
    Par défaut Problème COUNT et GROUP BY : dois-je passer par une req intermédiaire
    J'ai un problème que je n'arrive pas à déméler et vos lumières me seraient fort utiles : je précise que je travaille sur Access,(ceci explique peut-être cela??!!)

    J'ai une table de tbl_Visite avec les visites de patients...on retrouve donc plusieurs fois le même patient dans cette table. J'ai dans cette table un Id_Intervenant lié à une table xtb_Intervenant dans lequel ces intervenant sont classés par catégorie dans le champ CodeIntervenantInterface.

    Mon souhait est de faire une requète qui compte les patients(CodeAccueilli) par catégorie (CodeIntervenantInterface) mais je ne veux l'avoir que par patient et pas par visite...ainsi, si M.Dupont a passé 15 visites en sollicitant 10 fois le service psychiatrique, je veux juste que M.Dupont apparaisse comme 1 patient (donc 1 fois) ayant sollicité le service psychiatrique (et pas 10 fois)

    J'arrive à mes fins en faisant une requète intermédiaire qui fait un GROUP BY sur le patient (CodeAccueilli) et le CodeIntervenantInterface.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT tbl_Visite.CodeAccueilli, xtb_Intervenant.CodeIntervenantInterface
    FROM xtb_Intervenant INNER JOIN tbl_Visite ON xtb_Intervenant.IDIntervenant = tbl_Visite.CodeIntervenant1
    GROUP BY tbl_Visite.CodeAccueilli, xtb_Intervenant.CodeIntervenantInterface;
    Ma seconde requête compte ensuite le nombre de CodeAccueilli.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Count(Requête1.CodeAccueilli) AS CompteDeCodeAccueilli, Requête1.CodeIntervenantInterface
    FROM Requête1
    GROUP BY Requête1.CodeIntervenantInterface;
    Question : y-a t'il un moyen de faire ceci en une seule étape ? Lorsque je fais un COUNT directement dans la requête 1, j'ai un compte sur le nombre des visites des patients et pas un regroupement par patient (y compris quand je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Count(tbl_Visite.CodeAccueilli) AS CompteDeCodeAccueilli, xtb_Intervenant.CodeIntervenantInterface
    FROM xtb_Intervenant INNER JOIN tbl_Visite ON xtb_Intervenant.IDIntervenant = tbl_Visite.CodeIntervenant1
    GROUP BY xtb_Intervenant.CodeIntervenantInterface;
    ) qui ne me donne pas le réultat attendu

    Si vous avez une idée, j'avancerais beaucoup y compris dans ma compréhension des clauses de regroupement et d'agrégat qui m'echappent un peu...

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 87
    Points
    87
    Par défaut
    Bon alors j'y arrive en une seule requête en procédant ainsi (une sous-requête dans le FROM)...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Count(a.CodeAccueilli) AS CompteDeCodeAccueilli, a.CodeIntervenantInterface
    FROM (SELECT DISTINCT tbl_Visite.CodeAccueilli, xtb_Intervenant.CodeIntervenantInterface
    FROM xtb_Intervenant INNER JOIN tbl_Visite ON xtb_Intervenant.IDIntervenant = tbl_Visite.CodeIntervenant1
    GROUP BY tbl_Visite.CodeAccueilli, xtb_Intervenant.CodeIntervenantInterface) a
    GROUP BY a.CodeIntervenantInterface;
    Est-ce laid ? Y-a t'il plus orthodoxe ?

    Merci

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 82
    Points : 92
    Points
    92
    Par défaut
    non c'est pas laid...
    t'inquiètes on a vu largement pire

    De plus j'aurais surment ait ça également, à savoir une 1ere requête qui met en forme les données puis après l'agrégation de ces données.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Le DISTINCT ne se justifie pas ; il fait double emploi avec le GROUP BY de la sous-requête.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

Discussions similaires

  1. Problème count Join group by
    Par casa_sniper dans le forum PL/SQL
    Réponses: 5
    Dernier message: 08/12/2011, 12h21
  2. problème count et group by
    Par olivt0603 dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/12/2010, 15h13
  3. Réponses: 5
    Dernier message: 20/10/2008, 09h15
  4. Background degradé sans passer par une image?
    Par j14z dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 28/03/2008, 15h02
  5. problème count et group by
    Par zulkifli dans le forum Requêtes
    Réponses: 3
    Dernier message: 24/11/2006, 04h53

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