Microsoft SQL 服务器上自动生成的行

Auto-generated row on Microsoft SQL Server

我目前正在研究基于指纹的学生考勤系统。我正在使用 Arduino Uno 和指纹传感器获取学生出勤记录并存储在 SQL 服务器中。我的数据库中有一个名为 Attendance 的 table,用于存储学生出勤率 records.But 我对此有疑问。

假设学生A今天缺勤,考勤记录将不会存储在table Attendance 学生A。意思是我只能显示今天到校的学生,学生A的出勤记录不能给老师看。

教师只能在选择日期后查看学生出勤记录,教师看不到学生A的出勤记录,因为tableAttendance

中没有学生A的记录

那我该如何解决呢?有什么建议或参考吗?感谢您的帮助。谢谢

SELECT * 
FROM STUDENT
LEFT JOIN ATTENDANCEMARK
ON STUDENT.ID = ATTENDANCEMARK.STUDENTID
WHERE ATTENDANCEMARK.DATE = @DATE OR ATTENDANCEMARK.DATE IS NULL

说明:您希望列出所有具有今天出勤分数的学生,但想要列出所有没有出勤分数的学生。

假设您将日期作为参数传递,您可以 left outer join 到出勤 table,并将日期检查放在 on 子句中(相反到 where 子句。将它放在 where 子句中有效地将 left outer join 变成 inner join,这是由于查询的解析和执行顺序。

select * 
from [student] s
left outer join [attendance] a
    on s.[id] = a.[id]
        and a.[attendanceRecordDate] = @date