我有一個問題,現在我沒有想法。在WHERE中重現有條件的LEFT JOIN行爲?
我正在做一些數據庫應用程序的優化。有一個叫幾百次,做這種查詢方法(Method_A):
SELECT
A.a,
ISNULL(A.b, 'Nothing') As alias_b
ISNULL(B.a, 'N/A') as alias_c
FROM A
LEFT JOIN B on A.fk=B.fk AND B.a = 'SOME_KEY'
WHERE A.c = 'SOME_OTHER_KEY'
造成一列看起來像這樣:
[a ][alias_b][ alias_c ]
[ val_a ][ val_b ][val_c|'N/A']
我想,以優化做的我的代碼是在Method_A之前發出一個單一的請求,將所有數據取回並使Method_A過濾客戶端。 (它在.NET中編碼,我用DataSet替換OleDBConnection)
我怎麼能實現這種行爲?因爲如果我使用客戶端條件進行篩選,而不是在連接不返回任何內容的情況下獲得'N/A',那麼我就不會得到任何行,這是一個問題,因爲我仍然需要val_a和val_b
感謝您的幫助!
你想擁有的一切都A''和'B'發送到客戶端獨立,然後在客戶端做的加入? – Matthew
你怎麼做加入/過濾器客戶端,這是如何做一個左連接在LINQ http://stackoverflow.com/questions/700523/linq-to-sql-left-outer-join –
我一直在尋找一個服務器端解決方案(在SELECT或WHERE),但是我認爲我不會選擇單獨檢索A和B並進行客戶端連接,對嗎? –