2012-12-06 70 views
1

我試圖創建一個查詢,列出了從表1中的記錄與基於對應表2中有一個或多個字段的空值記錄的狀態一起。我遇到的問題是如何將包括從表1中,其在表2SQL顯示狀態值

沒有相應的記錄在我的例子紀錄,我想用一個字段一起列出所有學生的名字在tblStudent表明tblStudentSchedule他們的日程安排的狀態。如果任當然老師tblStudentSchedule null或者tblStudentSchedule沒有相應的記錄被發現,然後我想顯示「未完成」。否則,我想顯示「完成」

期望的結果

Name | Schedule Status 
----------------------- 
Bob | Incomplete  
Sally | Incomplete 
Jane | Incomplete 
Matt | Incomplete 
Jim | Complete 

我在訪問工作。我會發布我的查詢嘗試,但我認爲他們會混淆這個問題。這可能是非常基本的,但我有一個心理障礙試圖圍繞這一個圍繞我的大腦。當沒有找到匹配

tblStudent

studentID | studentName 
----------------------- 
1   | Bob 
2   | Sally 
3   | Jane 
4   | Matt 
5   | Jim 

tblStudentSchedule

studentID | period | course | teacher 
------------------------------------- 
1   | 1  | math | Jones 
1   | 2  | <null> | Watson 
2   | 1  | reading| <null> 
4   | 1  | <null> | Crick 
5   | 1  | math | Jones 
+0

我建議您閱讀有關不同類型的連接,尤其是outer join – rrrr

回答

2
select s.studentName as Name 
,  iif(sum(iif(ss.course is null or ss.teacher is null, 1, 0)) = 0, 
      'Complete', 'Incomplete') 
     as [Schedule Status] 
from tblStudent s 
left join  
     tblStudentSchedule ss 
on  ss.studentID = s.studentID 
group by 
     s.studentName 

left join返回與null的單個行。因此,當學生缺席時間表時,也會觸發ss.course is null的檢查。

+0

情況下,當語句不MS-訪問 – HelloW

+0

工作,你可以記錄這種說法?我認爲他們工作得很好,f.e. http://www.techonthenet.com/access/functions/advanced/case.php – Andomar

+2

@Andomar一個'CASE'只能在VBA代碼中,你需要在SQL查詢中使用'IIf'。 – Taryn