2017-02-24 38 views
0

我有這個表提取indrect關係在SQL

ID S E 
1 a b 
1 b c 
2 a b 
2 b d 
2 b e 
2 e d 
3 a c 
3 c f 

我想提取從該表間接的關係,例如:

ID S E 
1 a c 
2 a d 
2 a e 
2 b d 
3 a f 

我可以在C#或Java做,但我想知道如果有解決方案在SQL中執行它。

+0

只有一個跳了,還是及物動詞? – joop

+0

非常感謝您的評論Joop。過渡性更好。例如a => b,b => c和c => d在第一個表格中,如果我可以有a => d,那麼將會是greate! – MRFS

+0

您正在使用哪些DBMS? Postgres的?甲骨文? –

回答

1

你可以試試這個...

Create table #a (ID int, S varchar(1), E varchar(1)) 

Insert into #a 
select 1, 'a', 'b' Union all 
select 1, 'b', 'c' Union all 
select 2, 'a', 'b' Union all 
select 2, 'b', 'd'Union all 
select 2, 'b', 'e'Union all 
select 2, 'e', 'd'Union all 
select 3, 'a', 'c'Union all 
select 3, 'c', 'f' 


select * from #a 

select a.S, b.E 
from #a a 
    Inner join #a b on a.E = b.S and a.ID = b.Id 

drop table #a 
+0

感謝您的解決方案,有什麼辦法可以有更多的間接關係!例如,a => b,b => c和c => d位於第一個表中,其中a => d。我知道另一個內部連接可以找到它。但是這樣,我應該有幾次內連接,我也不知道我應該有多少內連接。 – MRFS