私はSQLクエリに慣れていませんが、スピードアップと単純化のために、コードレベルで行っている複数のクエリを移動してサーバーに結合したいと考えています。現在のところ、これは5-10項目だけでも数秒かかる。SQLクエリの簡素化 - SQL Serverでのコードの実行方法
私はビューとテーブルを持っていますが、それらをView1、Table1と呼びましょう。
私の最初のクエリ:これは私が通過ルーピングてるリストを(すべての項目がユニークUnitSerialNumber
である)、返し
SELECT UnitSerialNumber
FROM Table1
WHERE OrderID = 1234
AND IsActive = 1
ORDER BY SerialNumberDate, IsPrinted
...
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
これはどのように2つの値を返しますか?私はただ一つしか見ない。また、サンプルデータと希望の結果が得られれば、あなたのロジックははるかに簡単になるでしょう。 –
5-10個ですか?さて、実際にはどの部分が項目のパラメータですか? –
は、あなたがこの行うことができます:表1のT1からt1.UnitSerialNumber、v1.ResultId、v2.Data を選択し、内側 がt1.UnitSerialNumberにView1をV1 に参加= v1.Data インナー参加View1をv2の 上v2.ID = v1.ResultId ここt1.OrderID = 1234 AND t1.IsActive = 1 AND v1.ItemId = 338 AND v1.StatusId = 2 AND v2.ItemIdin(311,313) AND v2.StatusId v2.itemidによる= 2 ため –