2012-12-21 26 views
0

我正在努力與查詢的一個巨大的挑戰。我有兩個表,首先必須複雜的查詢連接檢查,該值不存在

Tb1中 drID schedDate rteID

其次有:

Tb2的 drID FName參數 LName的 活動

Tb1中drID必須檢查空或空白和匹配schedDate和drID不能有任何匹配Tb2.drID選擇日期的值,檢查Null和''實質上是這樣做的。

SELECT drID, schedDate, rteID 
FROM   Tb1 
WHERE  (drID IS NULL OR drID = '') AND (schedDate = 11/1/2012) 

從所有這一切,我需要從TB2 drID,FNAME,LName的凡活動=真和drID沒有任何記錄存在於TB1所選schedDate返回。

對於任何可能的日期都有很多tb1 rteID記錄。

謝謝你對這個和巨大的節日謝謝你的幫助。

回答

1

你可以讓你的SELECT語句,例如子查詢:

SELECT drID, Fname, LName 
FROM TB2 
WHERE Active = True 
AND drID NOT IN (
     SELECT drID 
     FROM Tb1 
     WHERE (drID IS NULL OR drID = '') 
     AND (schedDate = 11/1/2012) 
     ) 

編輯
爲了處理該schedDate爲null,則情況

SELECT drID, Fname, LName 
FROM TB2 
WHERE Active = True 
AND drID NOT IN (
     SELECT drID 
     FROM Tb1 
     WHERE (drID IS NULL OR drID = '') 
     AND (schedDate = @yourDate OR schedDate IS NULL) 
     ) 

編輯2
要處理drID爲空的情況,則可以使用NOT EXISTS的方法,如SO郵件中所強調的那樣NOT IN vs NOT EXISTS

SELECT drID, Fname, LName 
FROM TB2 
WHERE Active = True 
AND NOT EXISTS (
     SELECT drID 
     FROM Tb1 
     WHERE (schedDate = @yourDate) 
     AND Tb1.drID = TB2.drID 
     ) 
+0

這正是我所希望的。讓我測試並回復你。我編寫了這麼多的子查詢,試圖讓這個工作。 Arg, – htm11h

+0

返回錯誤:只有一個表達式可以在選擇列表中指定,當子查詢沒有與EXISTS – htm11h

+1

引入時抱歉...我*應該*刪除了子選擇中的額外項目。我修改了我的代碼。 –