Bonjour à tous,

J'ai un petit problème sur un Update dont je n'arrive pas à me dépêtrer.

En gros, j'ai un fichier texte qui est importé dans une table. Chaque ligne de ce fichier comporte une référence de facture + une référence de moyen de paiement. Chaque référence de facture peut correspondre à plusieurs références de paiement (= 1 facture payée par M chèques) et une référence de moyen de paiement peut correspondre à plusieurs références de facture (= N factures payée par un chèque).

Après import dans la table je me retrouve donc avec quelque chose du style (simplifié pour plus de clarté) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
RefFact    RefMP   numDossier
-----------------------------
fact1        MP1       NULL
fact2        MP2       NULL
fact2        MP3       NULL
fact2        MP4       NULL
fact3        MP4       NULL
fact3        MP5       NULL
fact4        MP6       NULL
fact5        MP7       NULL
A partir de cela, je dois constituer des dossiers en fonction des documents qui vont ensemble.

Exemple de cas simples : {fact1, MP1} forment un dossier. Idem pour {fact4, MP6} et {fact5, MP7}

Exemple de cas plus difficile : fact2 est payé par MP2, MP3 et MP4. Il sont donc liés. Mais MP4 sert aussi à payer un bout de fact3, qui lui même... Au final, ce dossier est constitué de {fact2, fact3, MP2, MP3, MP4, MP5}

Je dois donc obtenir :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
RefFact    RefMP   numDossier
-----------------------------
fact1        MP1       1
fact2        MP2       2
fact2        MP3       2
fact2        MP4       2
fact3        MP4       2
fact3        MP5       2
fact4        MP6       3
fact5        MP7       4

J'ai essayé différents bidouillages (que je ne montrerai pas, ils piquent tellement les yeux qu'on risque une épidémie de conjonctivite dans la communauté de dev SQL ).

J'ai notamment essayé une autojointure sur la ligne précédente (la table possède un id), mais ça ne fonctionne que si les lignes sont ordonnées dans le fichier et je viens d'apprendre que ça ne serait pas le cas. (Et de toute manière, j'ai appris ici que c'était une sorte d'hérésie...)

Quelqu'un a-t-il une solution pour ce problème ?

Merci d'avance !

PS : Pour info je suis sous SQL Server 2005