2013-04-30 49 views
1

那麼標題相當複雜。 我基本上想要做的事:SQL Server - 如何將存儲過程中從subquerys或表變量中的不同表中選擇結果插入到新表變量中?

我希望我的存儲過程從程序所做的事情中向用戶顯示類似「結果表」的內容。 但我用插入子查詢值或表變量數據與「INSERT INTO」語句極端問題。

需要在結果表中插入的數據(delcared as @resulttable)來自2個不同的表。並從我之前聲明的表變量(@allupdateditemIDs)。

我已經嘗試過這些腳本來做到這一點:

INSERT INTO @resulttable (UpdatedItemID, UpdatedItemName, NewProbability) 
SELECT * FROM @allupdateditemIDs ORDER BY ItemNum ASC, 
SELECT ItemName FROM ti_Item WHERE ItemNum IN (SELECT * FROM @allupdateditemIDs) ORDER BY ItemNum ASC, 
SELECT MixingProbability FROM ti_ItemMixingInfo WHERE TargetItemNum IN (SELECT * FROM @allupdateditemIDs) ORDER BY TargetItemNum ASC 

這其中也沒有「」 或者這一個:

INSERT INTO @resulttable (UpdatedItemID, UpdatedItemName, NewProbability) 
VALUES ((SELECT * FROM @allupdateditemIDs ORDER BY ItemNum ASC), 
(SELECT ItemName FROM ti_Item WHERE ItemNum IN (SELECT * FROM @allupdateditemIDs) ORDER BY ItemNum ASC), 
(SELECT MixingProbability FROM ti_ItemMixingInfo WHERE TargetItemNum IN (SELECT * FROM @allupdateditemIDs) ORDER BY TargetItemNum ASC)) 

我已經尋找波谷這麼多的網站,但我無法找到任何有用的信息,因爲我沒有從1表中獲取表格變量的數據,所以我從中獲得了很多信息。

我真的很感謝你的幫助。在此先感謝;)

回答

2

嘗試這一個 -

INSERT INTO @resulttable 
(
     UpdatedItemID 
    , UpdatedItemName 
    , NewProbability 
) 
SELECT 
     t.ItemNum 
    , tt.ItemName 
    , tmi.MixingProbability 
FROM @allupdateditemIDs t 
JOIN dbo.ti_Item tt ON tt.ItemNum = t.ItemNum 
JOIN dbo.ti_ItemMixingInfo tmi ON tmi.TargetItemNum = t.ItemNum 
ORDER BY t.ItemNum 
+0

完蛋了!非常感謝你的回答! – Vinzenz 2013-05-27 10:04:44

+0

不客氣@ user2334932。 – Devart 2013-05-27 10:07:11

1

我想你可以加入所有三個表在select查詢來獲取這樣的正確的數據:

INSERT INTO @resulttable (UpdatedItemID, UpdatedItemName, NewProbability) 
    SELECT @allupdateditemIDs.ItemNum,ti_Item.ItemName,ti_ItemMixingInfo.MixingProbability 
    FROM @allupdateditemIDs Inner join ti_Item 
    ON ti_Item.ItemNum [email protected] inner join ti_ItemMixingInfo 
    on [email protected] 
    ORDER BY @allupdateditemIDs.ItemNum ASC 
相關問題