2014-04-02 46 views
1

我已經寫了下面的代碼從起始表中獲取數據如何通過從SQL Server中的其他表中動態獲取ID來循環訪問?

select * from starting where PID in 
( 
select I.InstID from Inst I, 
Trus T where I.TrusID=75 and T.TrusId= 75 and I.InstID = 54 and I.InstStatusID=1 
) 

現在我想「TrusID」和「InstID」動態地從另一個表變量(可以說「直腸」和「出師表」)和將這些參數作爲參數傳遞給上面的查詢,並在我得到的每個「TrusID」和「InstID」的循環中運行。我怎樣才能做到這一點?

回答

1

如果沒有關於您正在嘗試解決的更大問題的背景知識,我會冒昧地假設不需要循環。

假設下面的DDL:

CREATE TABLE Trus ([TrusID] int); 
INSERT INTO Trus ([TrusID]) VALUES (75); 

CREATE TABLE Inst ([InstID] int, [InstStatusID] int, [TrusID] int); 
INSERT INTO Inst ([InstID], [InstStatusID], [TrusID]) VALUES (54, 1, 75); 

CREATE TABLE Starting ([PID] int); 
INSERT INTO Starting ([PID]) VALUES (54); 

下面的SQL生成的輸出爲原始查詢相同:

SELECT S.* 
FROM Starting AS S  
INNER JOIN Inst AS I   
    ON S.PID = I.InstID  
INNER JOIN Trus AS T   
    ON I.TrusID = T.TrusID 
WHERE I.InstStatusID = 1; 

獲取的第二個猜測自己,如果你在一個到達的習慣程序性(循環/遊標)解決方案解決SQL問題。

+0

謝謝你的建議。 Actully我需要循環通過,因爲某些原因。所以,請建議如何在這裏寫一個循環。請注意,我在另一個表中已經有TrusID和InstID。 – bapi

+0

@bapi在你的問題中解釋循環要求的原因會很有幫助。 – Bryan

+0

我按照您的建議在我的情況下預計不會有更多記錄。我需要確認,循環。因爲我覺得循環會給我強大的答案。 – bapi

相關問題