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 :

Regroupement "compte" incohérent


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 43
    Points : 30
    Points
    30
    Par défaut Regroupement "compte" incohérent
    Bonjour,

    Je pense avoir une bonne expérience d'access, mais là je me trouve confronté à un problème assez incompréhensible.

    j'effectue une requête sur une table, qui me retourne 1570 lignes.
    Si, à partir de cette requête, j'en crée une seconde, dans laquelle je fais un regroupement "standard", je récupère bien mes 1570 lignes
    Par contre, si, sur le même champ (un code alphanumérique de 11 caractères), je fais un regroupement de type "compte", le résultat des de ......13536!!!

    Je précise que ma requête ne comprend que ce seul et unique champ (pour l'instant)......

    J'avoue que je ne comprend pas bien, d'autant moins que ma base comprend un certain nombre de requêtes similaires, basées pou nombre d'entre elles sur la même requête initiale, et que toutes les autres fonctionnent normalement.

    Donc, si quelqu'un a une idée, ou encore mieux, une solution à me proposer... je suis preneur

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Pourrais-tu poster le SQL de ta requête ?

    A+

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 43
    Points : 30
    Points
    30
    Par défaut Mes requêtes SQL
    Bonjour,

    En fait, je dois communiquer le code de 2 requêtes, celle qui pose problème, et celle à partir de laquelle je récupère les données.

    Désolé, elles comprennent pas mal de champs...

    La requête de base (celle à partir de laquelle j'effectue les regroupements, mais qui est elle même déjà regroupée). elle s'appelle R_liste_formations=> appelons la requête 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT T_Formation_inscriptions.[Identifiant Unique Groupe (IUG)], T_Formation_inscriptions.Matricule, T_Formation_inscriptions.[Nom usuel], T_Formation_inscriptions.Prénom, T_Formation_inscriptions.Sexe, T_Formation_inscriptions.[Date de naissance], T_Formation_inscriptions.Âge, T_Formation_inscriptions.[Type de contrat], T_Formation_inscriptions.[Classification Entité], T_Formation_inscriptions.[Code entité juridique - niveau 1] AS [Code N1], T_Formation_inscriptions.[Libellé entité juridique - niveau 1], IIf(IsNull([Code entité juridique - niveau 2]),"--",([Code entité juridique - niveau 2])) AS [Code N2], T_Formation_inscriptions.[Libellé entité juridique - niveau 2], IIf(IsNull([Code entité juridique - niveau 3]),"--",([Code entité juridique - niveau 3])) AS [Code N3], T_Formation_inscriptions.[Libellé entité juridique - niveau 3], IIf(IsNull([Code entité juridique - niveau 4]),"--",([Code entité juridique - niveau 4])) AS [Code N4], T_Formation_inscriptions.[Libellé entité juridique - niveau 4], IIf(IsNull([Code entité juridique - niveau 5]),"--",([Code entité juridique - niveau 5])) AS [Code N5], T_Formation_inscriptions.[Libellé entité juridique - niveau 5], T_Formation_inscriptions.[Année plan], T_Formation_inscriptions.[Date du début de session], T_Formation_inscriptions.[Date de fin de session], T_Formation_inscriptions.[Modalité (réalisées)], T_Formation_inscriptions.[Axe d'orientation (Validation)], T_Formation_inscriptions.[Catégorie (validation)], T_Formation_inscriptions.[Titre de l'action de formation (français)], T_Formation_inscriptions.[Domaine/sous-domaine de la demande], T_Formation_inscriptions.[Code de l'action (Action associée)], T_Formation_inscriptions.[Code de la session de formation], T_Formation_inscriptions.Imputable, T_Formation_inscriptions.[Type de formation (Action associée)], T_Formation_inscriptions.[Nom de l'organisme (français)], T_Formation_inscriptions.[Nombre d'heures STT (réalisées)], T_Formation_inscriptions.[Nombre d'heures HTT (réalisées)], T_Formation_inscriptions.[Statut de présence], IIf(IsNull([Heures de présences HTT]),0,[Heures de présences HTT]) AS [Heures de présence HTT], IIf(IsNull([Heures de présences STT]),0,[Heures de présences STT]) AS [Heures de présence STT], T_Formation_inscriptions.[Statut (Validation)], T_Formation_inscriptions.[Nom de l'entité juridique (employeur)], T_Formation_inscriptions.[Nom de l'Entité payeur], T_Formation_inscriptions.[Nom de l'Entité d'exercice (bénéficiaire)], T_Formation_inscriptions.[Statut de l'inscription], T_Formation_inscriptions.[Statut du dossier]
    FROM T_Formation_inscriptions
    GROUP BY T_Formation_inscriptions.[Identifiant Unique Groupe (IUG)], T_Formation_inscriptions.Matricule, T_Formation_inscriptions.[Nom usuel], T_Formation_inscriptions.Prénom, T_Formation_inscriptions.Sexe, T_Formation_inscriptions.[Date de naissance], T_Formation_inscriptions.Âge, T_Formation_inscriptions.[Type de contrat], T_Formation_inscriptions.[Classification Entité], T_Formation_inscriptions.[Code entité juridique - niveau 1], T_Formation_inscriptions.[Libellé entité juridique - niveau 1], IIf(IsNull([Code entité juridique - niveau 2]),"--",([Code entité juridique - niveau 2])), T_Formation_inscriptions.[Libellé entité juridique - niveau 2], IIf(IsNull([Code entité juridique - niveau 3]),"--",([Code entité juridique - niveau 3])), T_Formation_inscriptions.[Libellé entité juridique - niveau 3], IIf(IsNull([Code entité juridique - niveau 4]),"--",([Code entité juridique - niveau 4])), T_Formation_inscriptions.[Libellé entité juridique - niveau 4], IIf(IsNull([Code entité juridique - niveau 5]),"--",([Code entité juridique - niveau 5])), T_Formation_inscriptions.[Libellé entité juridique - niveau 5], T_Formation_inscriptions.[Année plan], T_Formation_inscriptions.[Date du début de session], T_Formation_inscriptions.[Date de fin de session], T_Formation_inscriptions.[Modalité (réalisées)], T_Formation_inscriptions.[Axe d'orientation (Validation)], T_Formation_inscriptions.[Catégorie (validation)], T_Formation_inscriptions.[Titre de l'action de formation (français)], T_Formation_inscriptions.[Domaine/sous-domaine de la demande], T_Formation_inscriptions.[Code de l'action (Action associée)], T_Formation_inscriptions.[Code de la session de formation], T_Formation_inscriptions.Imputable, T_Formation_inscriptions.[Type de formation (Action associée)], T_Formation_inscriptions.[Nom de l'organisme (français)], T_Formation_inscriptions.[Nombre d'heures STT (réalisées)], T_Formation_inscriptions.[Nombre d'heures HTT (réalisées)], T_Formation_inscriptions.[Statut de présence], IIf(IsNull([Heures de présences HTT]),0,[Heures de présences HTT]), IIf(IsNull([Heures de présences STT]),0,[Heures de présences STT]), T_Formation_inscriptions.[Statut (Validation)], T_Formation_inscriptions.[Nom de l'entité juridique (employeur)], T_Formation_inscriptions.[Nom de l'Entité payeur], T_Formation_inscriptions.[Nom de l'Entité d'exercice (bénéficiaire)], T_Formation_inscriptions.[Statut de l'inscription], T_Formation_inscriptions.[Statut du dossier], T_Formation_inscriptions.[Nom de l'organisme (français)]
    HAVING (((T_Formation_inscriptions.[Identifiant Unique Groupe (IUG)]) Is Not Null));
    Le bilan est le suivant:
    - dans la table T_formations_inscriptions, j'ai 13546 enregistrements (qui correspondent chacun à un élément d'une formation donnée)
    - dans la requête R_liste_formations, je regroupe en fonction des éléments déterminants afin d'identifier la liste des inscriptions "différentes" (soit 13536 ici, les données non déterminantes étant pratiquement absentes du jeu de données courant)
    - Si j'exécute la requête de cumul en faisant un simple "regroupement", c'est à dire avec le code suivant=> appelons la requête 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT R_liste_formations.[Nom de l'Entité payeur], R_liste_formations.[Identifiant Unique Groupe (IUG)]
    FROM R_liste_formations
    GROUP BY R_liste_formations.[Nom de l'Entité payeur], R_liste_formations.[Identifiant Unique Groupe (IUG)];
    j'obtiens 1570 enregistrements (correspondant au nombre de personnes ayant suivi une formation)
    - Par contre, si je recherche une nouvelle synthèse, en faisant le compte, par entité payeur, du nombre d'IUG concernés, avec le code suivant=> appelons la requête 3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT R_liste_formations.[Nom de l'Entité payeur], Count(R_liste_formations.[Identifiant Unique Groupe (IUG)]) AS [CompteDeIdentifiant Unique Groupe (IUG)]
    FROM R_liste_formations
    GROUP BY R_liste_formations.[Nom de l'Entité payeur];
    la somme des comptes me retourne 13536, en fait comme si le regroupement ne fonctionnait pas.

    Pour l'instant, j'ai contourné le problème en faisait 3 niveaux de requête:
    - Le premier, inchangé
    - Le second, réalisant le regroupement cf requête 2
    - Le troisième, en réalisant la requête 3, basée cette fois, non sur la requête 1, mais sur la requête 2

    mais d'une part, cela complique la structure, et en plus, j'aimerais comprendre pourquoi mon principe de bas ne fonctionne pas

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