古いコードを変換してより最適化するので、ここで立ち往生しました。2つのストアドプロシージャを起動することで古い方法で実行できますが、試した結合で可能かどうかを考えていましたが、正しく取得できなかったので、助けてください素晴らしいことだ
私の古いコードとクエリ
dataset = Select data1,data2,data3 from table where column1='somevalue'
//now consider dataset have the records of the above query then
foreach (row in dataset)
{
Select top 1 tab2data,tab2data from table2 with (nolock) where LtrFileName = row.data1
//Do some more functionality i can handle this part
}
したがって、結合によってこれら2つのクエリを結合しようとしていましたが、左結合で正しく取得できましたがtop 1
、結合で適用すると間違った出力が得られることを理解できません。基本的に、これらを取得する方法があるかどうかを尋ねています2 つのクエリを 1 つのストアド プロシージャにまとめ、すべての foreach コーディング部分を回避します。
UPDATE 私が明確でない場合は申し訳ありませんが、ここに最初のクエリからの元の出力があります
data1 data2 data3 data4
001000 002142 NBIS1N 20130514
001000 002142 NBIS1R 20130514
001000 002142 NBTB1N 20130514
001000 002142 NBTB1R 20130514
これらはすべての記録です
tab2data1 tab2data2 data3 tab2data3
NULL NULL NBIS1N 239
NBIS1R_20100323.pdf 000110-Acct_Rec_Mgmt NBIS1R 349
NBIS1R_20100324.pdf 000110-Acct_Rec_Mgmt NBIS1R 349
NBTB1N_20100323.pdf 000110-Acct_Rec_Mgmt NBTB1N 508
NBTB1N_20100324.pdf 000110-Acct_Rec_Mgmt NBTB1N 508
NULL NULL NBTB1R 1360
2番目のクエリを実行した後、次のように4行のみを取得します
tab2data1 tab2data2 data3 tab2data3
NULL NULL NBIS1N 239
NBIS1R_20100324.pdf 000110-Acct_Rec_Mgmt NBIS1R 349
NBTB1N_20100324.pdf 000110-Acct_Rec_Mgmt NBTB1N 508
NULL NULL NBTB1R 1360