Numéroter un champ d'une requete

Fermé
jadami Messages postés 103 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 18 septembre 2020 - 28 mars 2017 à 01:11
yg_be Messages postés 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 - 30 mars 2017 à 17:35
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

yg_be Messages postés 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 Ambassadeur 1 557
28 mars 2017 à 07:18
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
jadami Messages postés 103 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 18 septembre 2020
28 mars 2017 à 15:19
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
yg_be Messages postés 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 1 557
28 mars 2017 à 16:00
Tu as dans ta table Ttemp deux champs, Ttemp.NomAdhérent et Ttemp.T2.NomAdhérent. Dans quel but?
0
yg_be Messages postés 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 1 557
Modifié le 28 mars 2017 à 16:36
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
jadami Messages postés 103 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 18 septembre 2020
29 mars 2017 à 00:32
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
yg_be Messages postés 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 1 557
29 mars 2017 à 12:12
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
jadami Messages postés 103 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 18 septembre 2020
30 mars 2017 à 10:42
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
yg_be Messages postés 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 1 557
Modifié le 30 mars 2017 à 17:39
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