J'ai une table qui représente une série de correspondances entre ids d'une autre table comme suit:groupes de liaison des matches
CREATE TABLE #matches (
asid1 int,
asid2 int
)
insert into #matches values (1,2)
insert into #matches values (1,3)
insert into #matches values (3,1)
insert into #matches values (3,4)
insert into #matches values (7,6)
insert into #matches values (5,7)
insert into #matches values (8,1)
insert into #matches values (1,8)
insert into #matches values (8,9)
insert into #matches values (8,3)
insert into #matches values (10,11)
insert into #matches values (12,10)
et je veux trouver des groupes de matchs qui sont liés directement ou indirectement à un autre.
La sortie ressemblerait à ceci:
group asid
1 1
1 2
1 3
1 4
1 8
1 9
2 5
2 6
2 7
3 10
3 11
3 12
si je devais ajouter une autre ligne:
insert into #matches values (7,8)
alors cela signifierait que deux des groupes ci-dessus seraient liés, donc je require output:
group asid
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
2 10
2 11
2 12
Des idées?
Edit: D'autres recherches me conduit à croire qu'une expression de table commune récursive devrait faire l'affaire ... si je figure sur quelque chose d'élégant, je vais le poster
cet algo s'est avéré être exactement le genre de chose que nous recherchions. Merci beaucoup de m'avoir indiqué la bonne direction. la version sql est toujours en attente :) – spender
Pas de problème! J'ai dû mettre en place ma propre version C++ au collège. C'est la seule raison pour laquelle je me suis souvenu de ce que c'était. – EndangeredMassa