sqlite show 1 and 0 if record exists or not 工作

sqlite show 1 and 0 if record exists or not doesn't work

我想更进一步 所以,假设我们有一些学生在特定时间段参加某些课程,我们得到那些 tables

其中粗体字段是主键

In attends table, attendsId PK, (stRegNum, courseCode,periodId) FK

对于 ID = 00001 的 学生 我想显示所有参加过的课程,前面有 1,没有参加的课程有 0。像这样

我创建了一个查询以查看其工作原理

select (
  case when exists(
    select 1
    from course 
    where attends.stRegNum = '00001' 
    group by course.courseCode
  )
  then 1
  else 0
  end
) as hh, *
from course left join attends on course.courseCode = attends.courseCode

我明白了

这显然是错误的。我知道 left join 搞砸了,但我尝试了一切,我无法获得预期的结果。

有人能告诉我我哪里做错了吗?如何解决?提前谢谢你。

PS: 我不太确定标题。如果您有更好的想法,请提出建议!

对于学生“00001”,您可以通过首先选择所有课程然后加入参加者来查看他们参加了哪些课程table,用 1 标记 00001 参加的所有课程:

select distinct
        course.courseCode
        ,case when attends.attendsId is not null then 1 else 0 end as attendedCourse

from course 
        left join attends
        on course.courseCode = attends.courseCode
        and attends.stRegNum = '00001'