我有一個表Circuits
其中包含列和一些其他信息。我有一個表,其中包含CircuitID列和一些其他信息
我也有一個表Ports
其中包含PortID
和一些其他信息。
,我還沒有另一個表Connections
包含,A_PortID
,A_Facing
,Z_PortID
,Z_Facing
和其他一些信息。正面只能分別表示前面和後面的「F」或「R」。
進入「F」前部的任何連接都連接到「R」後部。
基本上我需要的是檢索包含和電路每端的端口ID的視圖。
例如。
對於電路 「1」 的連接表內
CircuitID, A_PortID, A_Facing, Z_PortID, Z_Facing
-------------------------------------------------
1 1 "F" 2 "R"
1 2 "F" 3 "F"
1 3 "R" 4 "R"
所以整個對於電路連接變得
1 "F" <---> 2 "R" <> 2 "F" <---> 3 "F" <> 3 "R" <---> 4 "R"
所以對於電路中,PortID1=1
和Facing1="F"
和PortID2=4
和Facing2="R"
由於每個電路的連接數量不盡相同,我正在考慮使用存儲過程或函數從每個電路獲得任何1個連接。
這樣,我可以利用PortID
並面對,然後調用另一個子過程或函數來確定下一個連接的結束。它將保持循環,直到沒有端口連接到遠端。
有了這個,我將能夠得到PortID
和麪對這個遠程端。
接下來我將執行相同的功能來檢查另一端。
最後,我需要將結果按分組,並獲得連接PortID的每個端點並面對。
希望任何人都可以建議我是否應該使用存儲過程或函數。然後繼續循環並調用另一個子過程或函數。我不確定哪個更適合這種用途。存儲過程或功能。
我已經創建子過程只是爲了尋找下一個連接
CREATE PROCEDURE dbo.GetNextEnd(@Portid int, @Facing varchar)
AS
SELECT Connections.Z_PortID AS RemotePortID, Connections.Z_Facing AS RemoteFacing,
Connections.Z_RackID As RemoteRackID, Connections.Z_Description As RemoteDescription FROM Connections WHERE Connections.A_PortID = @PortID AND Connections.A_Facing = @Facing
UNION
SELECT Connections1.A_PortID AS RemotePortID, Connections1.A_Facing AS RemoteFacing,
Connections1.A_RackID As RemoteRackID, Connections1.A_Description As RemoteDescription FROM Connections AS Connections1 WHERE Connections1.Z_PortID = @PortID AND Connections1.Z_Facing = @Facing
希望有人也可以顯示如何在主過程的循環使用任何例子或者函數來調用上述子過程。
我一直在嘗試幾個星期,仍然無法讓它在SQL中工作。請幫助我...
這個問題很痛苦看 – 2013-03-21 14:52:20