我有一個代表從另一個表ID之間的一系列比賽如下表:聯比賽的團體
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)
,我想找到直接或間接與彼此匹配的組。
輸出應該是這樣的:
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
如果我添加其他行:
insert into #matches values (7,8)
那麼這將意味着上述各組的2將被鏈接,所以我會要求輸出:
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
任何想法?
編輯:進一步的研究使我相信,遞歸公用表表達式應該做的伎倆...如果我什麼事情弄清楚優雅我會後
這個算法原來就是我們之後的事情。非常感謝您指引我朝着正確的方向發展。 sql版本仍在等待:) – spender 2009-04-10 04:41:56
沒問題!我必須在大學裏實現我自己的C++版本。這是我記住甚至是唯一的原因。 – EndangeredMassa 2009-04-10 14:36:13