Numéroter un champ d'une requete

jadami Messages postés 107 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Dans une requête Access, je voudrais avoir un champ qui me donne
un champ numéroté suivant ce schéma.

RéfAdhérent---------- NomAdhérent------------------- Numéro
100--------------------------A--------------------------------1
155--------------------------B--------------------------------2
155--------------------------B--------------------------------2
155--------------------------B--------------------------------2
200--------------------------C--------------------------------3
250--------------------------D--------------------------------4
250--------------------------D--------------------------------4

Est-ce que cela est possible ?

Merci pour votre aide.

Salutations

4 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, je pense que c'est possible.
    peux-tu nous décrire tes tables et tes champs, ainsi que ta requête (sans le numéro)?
    cela nous permettra sans doute de te proposer une requête avec le numéro.
    0
  2. jadami Messages postés 107 Statut Membre
     
    Bonjour,

    Merci pour ta réponse,

    Je joins le SQL de ma requête ainsi qu'une photo du champ RéfAdhérent et
    NomAdhérent :

    SELECT Ttemp.RéfAdhérent, Ttemp.NomAdhérent, Ttemp.RéfAnimateur, Ttemp.Confirmé, Ttemp.Départ, Ttemp.ArrêtDéfinitif, Ttemp.ArrêtProvisoire, Ttemp.RéfAnimateurType, Ttemp.RéfFormation, Ttemp.DatesDu, Ttemp.DatesAu, Ttemp.Ville, Ttemp.[Validé le], Ttemp.Recyclage, Ttemp.AnnéeRecyclage, Ttemp.RéfFormationActivitéListe, Ttemp.NomPrénom, Ttemp.Adresse, Ttemp.Titre, Ttemp.ActivitéListe, T5.RéfActivitéListe, T5.RéfActivitéOption, T5.RéfFormationListe, T6.ActivitéListe, T7.ActivitéOption, T7.LibelléRegroup, T8.FormationListe, T8.LibelléListe, Ttemp.RéfDocument, T9.TypeDocument, T9.LibelléDocument
    FROM ((((Ttemp LEFT JOIN [tbl Formations-Activités-Liste] AS T5 ON Ttemp.RéfFormationActivitéListe = T5.RéfFormationActivitéListe) LEFT JOIN [tbl Activités-Liste] AS T6 ON T5.RéfActivitéListe = T6.RéfActivitéListe) LEFT JOIN [tbl Activités-Option] AS T7 ON T5.RéfActivitéOption = T7.RéfActivitéOption) LEFT JOIN [tbl Formations-Liste] AS T8 ON T5.RéfFormationListe = T8.RéfFormationListe) LEFT JOIN [tbl Documents] AS T9 ON Ttemp.RéfDocument = T9.RéfDocument
    WHERE (((Ttemp.RéfAnimateurType)=2) AND ((Ttemp.T2.Départ)<>True) AND ((Ttemp.T3.ArrêtDéfinitif)<>True))
    ORDER BY Ttemp.T2.NomAdhérent;



    Nota: lire Numéro au lieu de rang

    Salutations
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Tu as dans ta table Ttemp deux champs, Ttemp.NomAdhérent et Ttemp.T2.NomAdhérent. Dans quel but?
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      que donne ceci?
      select T91.NomAdhérent as nom, count(*) + 1 as rang
      from Ttemp as T91, Ttemp as T92
      where 
      T91.RéfAnimateurType=2 AND T91.T2.Départ<>True AND T91.T3.ArrêtDéfinitif<>True
      AND 
      T92.RéfAnimateurType=2 AND T92.T2.Départ<>True AND T92.T3.ArrêtDéfinitif<>True
      AND T92.NomAdhérent < T91.NomAdhérent
      GROUP BY T91.NomAdhérent
      ORDER BY T91.NomAdhérent;
      0
  3. jadami Messages postés 107 Statut Membre
     
    Bonsoir,

    La requête fonctionne mais les enregistrements ne correspondent pas à ce que je veux, j’ai absolument besoin des lignes de toutes les tables ce qui suppose de ne pas faire de regroupement.

    Dans l’image que j’ai joint toutes les lignes de réfAdhérent = a :
    1541 doit avoir 1 comme valeur
    5 doivent avoir 2 comme valeur
    954 doivent avoir 3 comme valeur
    etc ,,,,,,

    Pour les deux champs on supprime le T2 et l'on garde l'autre en rajoutant le tri.

    Salutations.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      est-ce que la requête proposée calcule correctement le rang de chacun? si oui, il suffit de fusionner ta requête de départ et la requête proposée. si non, je préfère d'abord corriger la requête proposée.
      0
  4. jadami Messages postés 107 Statut Membre
     
    Bonjour,

    Non la numérotation doit commencer par 1

    Je joins une image de la requête proposée, et une autre pour la requête
    fusionnée ou l'on voit un blanc pour un nom.



    Un grand merci pour ton aide.

    Salutations.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Pourquoi chaque adhérent est-il présent plusieurs fois dans Ttemp?
      As-tu une autre table où chaque adhérent est présent une seule fois, avec ses valeurs pour RéfAnimateurType, Départ et ArrêtDéfinitif?
      Sinon, il faut utiliser, dans la requete que j'ai proposé, ceci au lieu de Ttemp:
      select distinct RéfAdhérent, NomAdhérent, RéfAnimateurType, Départ, ArrêtDéfinitif from Ttemp

      ce qui donne:
      SELECT T91.RéfAdhérent, T91.NomAdhérent AS nom, count(*) + 1 AS rang
      FROM (SELECT DISTINCT RéfAdhérent, NomAdhérent, RéfAnimateurType, Départ, ArrêtDéfinitif FROM Ttemp)  AS T91, (SELECT DISTINCT RéfAdhérent, NomAdhérent, RéfAnimateurType, Départ, ArrêtDéfinitif FROM Ttemp)  AS T92
      WHERE T91.RéfAnimateurType=2 AND T91.T2.Départ<>True AND T91.T3.ArrêtDéfinitif<>True AND  T92.RéfAnimateurType=2 AND T92.T2.Départ<>True AND T92.T3.ArrêtDéfinitif<>True AND T92.NomAdhérent < T91.NomAdhérent
      GROUP BY T91.NomAdhérent
      ORDER BY T91.NomAdhérent;
      

      cela marche mieux?
      0