我對SQL查詢不是很熟悉,但我想將我在代碼級別上執行的多個查詢移動併合併到服務器,以加速並簡化它。目前這隻需要幾秒鐘,即使只有5-10個項目。SQL查詢簡化 - 如何在SQL Server中執行代碼中的任務?
我有一個視圖和一個表,我們稱它們爲View1,Table1。
我的第一個查詢:
SELECT UnitSerialNumber
FROM Table1
WHERE OrderID = 1234
AND IsActive = 1
ORDER BY SerialNumberDate, IsPrinted
這將返回一個列表(每個項目是一個獨特的UnitSerialNumber
),這我循環通過......
BEGINNING OF LOOP
SELECT ResultId
FROM View1
WHERE Data = UnitSerialNumber
AND ItemId = 338
AND StatusId = 2
這返回一個值(ResultId
),我在查詢中使用...
SELECT Data
FROM View1
WHERE ID = ResultId
AND (ItemId = 311 OR ItemId = 313)
AND StatusId = 2
ORDER BY ItemId
(我知道這個表結構是廢話,但我不能用它做任何事情,這是數據存儲的方式。)所以這返回一個帶有2個值的對象。
END OF LOOP
這是如何返回兩個值?我只看到一個。此外,如果您有樣本數據和期望的結果,您的邏輯將更容易遵循。 –
5-10個項目?好的,但哪個部分實際上是項目的參數? –
你可以做這樣的:從表1 T1選擇t1.UnitSerialNumber,v1.ResultId,v2.Data 內連接視圖1 V1 上t1.UnitSerialNumber = v1.Data 內連接視圖1在V2 v2.ID = v1.ResultId 其中t1.OrderID = 1234 AND t1.IsActive = 1 AND v1.ItemId = 338 AND v1.StatusId = 2 AND v2.ItemIdin(311313) AND v2.StatusId = 2 爲了通過v2.itemid –