具有null值的记录的SQL显示状态



我正在尝试创建一个查询,该查询列出表1中的记录以及基于表2中一个或多个字段中具有空值的相应记录的状态。我遇到的问题是如何包括表1中的记录,而表2中没有相应的记录。

在我的示例中,我想列出tblStudent中所有学生的姓名,以及tbl StudentSchedule中指示其时间表状态的字段。如果tblStudentSchedule中的课程教师//strong>字段为Null,或者在>tblStudientSchedule中找不到相应的记录,则我希望显示"不完整">。否则,我希望显示"完成">

所需结果

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

我在Access工作。我会发布我的查询尝试,但我认为它们只会混淆问题。这可能是非常基本的,但我有一个心理障碍,试图把我的大脑包裹在这个问题上。

tbl学生

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

tbl学生时间表

studentID | period | course | teacher
-------------------------------------
1         | 1      | math   | Jones
1         | 2      | <null> | Watson
2         | 1      | reading| <null>
4         | 1      | <null> | Crick
5         | 1      | math   | Jones
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的检查。

如果在tblStudentSchedule中找不到相应的记录,则可以使用左联接或右联接将该表中的行作为null coulns获取。阅读下文:

http://office.microsoft.com/en-us/access-help/left-join-right-join-operations-HP001032251.aspx

然后使用isull函数转换null列http://www.techonthenet.com/access/functions/advanced/isnull.php

或者使用case语句检查是否为nullhttp://www.techonthenet.com/access/functions/advanced/case.php

相关内容

  • 没有找到相关文章

最新更新