2012-04-09 50 views
1

我對sql很新,實際問題更大。 我需要在以下情況下的信息。說我有兩個表像不確定的條件SQL加入,請參閱說明

MemberTable

MonthID | UserID | TeamID 
----------------------------- 
    1  | 1  | 6 
    1  | 2  | 6 
    1  | 3  | 6 
    1  | 4  | 6 

ReportTable

ID* | MonthID | UserID | IsSend 
----------------------------------- 
1 | 1  | 2  | False 
2 | 1  | 3  | True 

我需要用戶在ReportTable不存在的總數和用戶對他們來說, IsSendValue是False,即count = 3

在一個查詢中可以這樣做嗎?如果這是不可能的和可能的解決方案,請給予解釋。

回答

4
SELECT COUNT(DISTINCT UserID) 
FROM MemberTable 
WHERE UserID NOT IN (SELECT UserID FROM ReportTable) 
OR UserID IN (SELECT UserID FROM ReportTable WHERE IsSend=FALSE) 

應該返回用戶UserID 1,2和4更簡潔的查詢來達到同樣的結果是:

SELECT COUNT(DISTINCT UserID) 
FROM MemberTable 
WHERE UserID NOT IN (SELECT UserID FROM ReportTable WHERE IsSend=TRUE) 
+3

不要你需要一個'DISTINCT'? – mshsayem 2012-04-09 09:04:33

+0

是的。相應更正。乾杯! – 2012-04-09 09:08:16

+0

謝謝。其實我不需要DISTINCT,因爲我必須將它們與其他列進行分組。 – 2012-04-09 09:35:02