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 :

Requête de comptage [AC-2002]


Sujet :

Requêtes et SQL.

  1. #1
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut Requête de comptage
    Bonjour,

    Je dois faire un comptage sur une base, mais je n'y parviens pas.

    Voilà mes tables :

    Agents
    Id_Agt

    Affectations
    Id_Agt
    Date
    Service

    Entretiens
    Id_Agt
    Date

    Propositions
    Id_Agt
    Date
    Id_Proposition

    Pour un agent, on peut avoir plusieurs affectations
    Pour un agent, on peut avoir plusieurs entretiens
    Pour un entretien, on peut avoir plusieurs propositions

    Je voudrais obtenir le nombre d'entretiens et le nombre de propositions par service. Le problème est qu'il ne faut tenir compte que de la dernière affectation (service ayant la date la plus récente).

    Pensez-vous que ce soit réalisable avec une requête SQL ou bien faut-il passer par du code ?

    Merci d'avance pour vos idées.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 604
    Points : 34 279
    Points
    34 279
    Par défaut

    C'est faisable, avec plusieurs petites sous-requêtes.
    Ca permet de mettre en avant l'avantage d'avoir un système avec Date_debut et Date_Fin

    essaie de faire les différents blocs les uns après les autres :
    - nb d'Id_Agt par service
    - nb d'entretiens par Id_Agt


    par contre, il faudra faire attention dans Proposition, à bien avoir une Date>Date d'affectation de l'Id_Agt
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    par contre, il faudra faire attention dans Proposition, à bien avoir une Date>Date d'affectation de l'Id_Agt
    Merci de ta réponse,

    Je n'ai pas de date d'affectation dans la table des propositions. Je n'ai que la date de l'entretien.

    Un exemple de l'architecture de ma base :

    Agents
    AGT1
    AGT2
    AGT3

    Affectations
    AGT1 - 01/01/2000 - SERVICE2
    AGT1 - 01/01/2003 - SERVICE3
    AGT1 - 01/01/2008 - SERVICE1

    AGT2 - 01/01/2005 - SERVICE3
    AGT2 - 01/01/2009 - SERVICE2

    AGT3 - 01/01/2001 - SERVICE2
    AGT3 - 01/01/2004 - SERVICE1

    Entretiens
    AGT1 - 01/02/2009
    AGT1 - 01/04/2009

    AGT2 - 11/01/2009

    AGT3 - 05/02/2009

    Propositions
    AGT1 - 01/02/2009 - P1
    AGT1 - 01/02/2009 - P2
    AGT1 - 01/04/2009 - P1

    AGT2 - 11/01/2009 - P1
    AGT2 - 11/01/2009 - P3

    AGT3 - 05/02/2009 - P2
    AGT3 - 15/03/2009 - P1

    Résultat attendu :

    SERVICE1 - 3 Entretiens - 5 propositions
    SERVICE2 - 1 Entretien - 2 propositions
    SERVICE3 - 0 Entretien - 0 proposition

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 604
    Points : 34 279
    Points
    34 279
    Par défaut
    Ok,

    alors essaie déjà de faire les 2 blocs dont je t'ai parlé, on se basera sur ce que tu as déjà réussi à faire, c'est plus constructif
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour à tous,

    voici une proposition :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     SELECT LIBELLE, Sum([Rqt1].[NbEnt]) As [Total Entretiens], Sum([Rqt1].[NbProp]) As [Total Propositions]
    FROM SERVICES
    LEFT JOIN
     (SELECT Aff.Service,
      (SELECT Count(*) FROM Entretiens As Ent WHERE ent.id_agt=aff.id_agt AND ent.Date>=Aff.Date) As [NbEnt],
      (SELECT Count(*) FROM Propositions As Prop WHERE Prop.id_agt=Aff.id_agt AND Prop.Date>=Aff.Date) As [NbProp]
       FROM Affectations As Aff
       WHERE  Aff.Date=(SELECT Max(Date) FROM Affectations WHERE Affectations.id_agt=Aff.id_agt)
      ) As [Rqt1]
    ON [Rqt1].Service=SERVICES.Service
    GROUP BY [Rqt1].Service;

  6. #6
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Alors là, ilank, je dis RESPECT !

    Merci également à jpcheck.

    Je ne mets pas tout de suite résolu, car j'aurai encore deux questions :

    - J'ai également une table SERVICES (SERVICE, LIBELLE). Comment écrire la même requête en récupérant le libellé du service ?

    - Dans mon exemple, est-il possible de récupérer pour SERVICE3 : SERVICE3 - 0 Entretien - 0 proposition

    Merci encore

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Regarde le code corrigé plus haut.

  8. #8
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Merci,

    C'est nickel !

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

Discussions similaires

  1. [AC-2003] Requête avec comptage
    Par ovett dans le forum Access
    Réponses: 0
    Dernier message: 08/06/2009, 17h05
  2. [A-03] Requête et comptage
    Par nico69100 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/01/2009, 15h50
  3. requête de comptage +pourcentage
    Par khilim dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/08/2008, 22h54
  4. Requête avec comptage
    Par Arsene12 dans le forum WinDev
    Réponses: 4
    Dernier message: 16/04/2008, 14h26
  5. Requête de comptage. Problème de mise en forme
    Par ksper92 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/12/2006, 15h17

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