Numéroter enregistrements d'une requête SQL

Fermé
Cigg - 28 avril 2010 à 18:35
 Cigg - 29 avril 2010 à 14:27
Bonjour,

Je bloque sur un problème de numérotation d'enregistrements retournés par une requête SQL directe (tables AS/400) sous Access

Ma table contient 4 champs principaux, utilisés dans ma requête :
- Type_Ope
- Code_Client
- Ref_Ope
- Montant_saisie

Pour un même type d'opération, un même client, une référence d'opération, il est possible d'avoir 2 montants saisis strictement identique et donc de constituer des doublons dans le résultat de la requête.

La requête actuel affiche donc bien les deux enregistrements, mais rien ne permet de les différencier.

Je souhaiterais pour contourner ce problème ajouter un champs pour affecter un nombre unique à mes enregistrements, mais pas un simple compteur. Je souhaite recommencer la numérotation à chaque groupe Type_Ope, Code_Client, Ref_Ope, Montant_Saisie...et c'est là que je bloque !)

Actuellement, la requête (SELECT Type_Ope, Code_Client, Ref_Ope, Montant_Saisie FROM MaTable) affiche :
Type1 ; Client1 ; Ref1 ; 100
Type1 ; Client1 ; Ref1 ; 50
Type1 ; Client1 ; Ref1 ; 100
Type1 ; Client2 ; Ref1 ; 40
Type1 ; Client2 ; Ref2 ; 60
Type1 ; Client2 ; Ref3 ; 20
Type1 ; Client2 ; Ref3 ; 20

Je souhaiterais obtenir :
Type1 ; Client1 ; Ref1 ; 100 ; 1
Type1 ; Client1 ; Ref1 ; 50 ; 1
Type1 ; Client1 ; Ref1 ; 100 ; 2
Type1 ; Client2 ; Ref1 ; 40 ; 1
Type1 ; Client2 ; Ref2 ; 60 ; 1
Type1 ; Client2 ; Ref3 ; 20 ; 1
Type1 ; Client2 ; Ref3 ; 20 ; 2

Pourriez-vous me venir en aide ?

D'avance merci aux âmes charitables :)



1 réponse

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
28 avril 2010 à 23:53
Je vois une solution triviale.
Il te faut évidemment ajouter un champ de type 'INT' à ta base.
Avant d'ajouter un nouvel enregistrement avec de nouvelles valeurs, il te suffit de faire un:
SELECT COUNT(*)
   FROM taTable
   WHERE Type_Ope=valType
     AND Code_Client=valClient
     AND Ref_Ope=valRef
     AND Montant_Saisie=valMontant;
Le nouveau champ sera égal à ce résultat +1.
Bonne continuation.
0
Bonjour Loupius et merci de ta proposition.

Je n'ai cependant pas l'accès en écriture sur cette table, et sa structure déjà complexe ne peut être modifiée.

Je dois donc "agir" et obtenir le résultat dans la requête elle-même.

Encore merci !
0