我正在编写一个查询来查找没有任何可评分项目的课程。
在Blackboard中,当用户根本没有成绩时(例如,没有尝试过),表格中只有一行gradebook_grade
因此,如果课程中没有任何成绩,gradebook_grade
表中没有引用黑板course_id
主键的行<{1}}
这是我到目前为止所使用的:
use bblearn
select cm.course_id
from course_main cm
join gradebook_main gbm on cm.pk1 = gbm.crsmain_pk1
join gradebook_grade gbg on gbm.pk1 = gbg.gradebook_main_pk1
where cm.pk1 = 3947
group by cm.course_id
having count(gbg.pk1) <= 0
相关课程(pk1 3947
)已确认无任何成绩。所以SQL Server自然会说0行受到影响。
问题是,它没有选择course_id。我猜having
没有考虑空白/不存在的行。有什么方法可以构建查询以在没有返回任何内容时获取课程ID?我是否加入错误的列或在错误的列上使用where
?任何帮助表示赞赏。
答案 0 :(得分:1)
使用left join
select cm.course_id
from course_main cm
left join gradebook_main gbm on cm.pk1 = gbm.crsmain_pk1
left join gradebook_grade gbg on gbm.pk1 = gbg.gradebook_main_pk1
where cm.pk1 = 3947
group by cm.course_id