我应该创建一个表来跟踪"缺失"记录?

时间:2016-01-07 01:34:05

标签: mysql database system-analysis

我有一个名为student的表格,它包含以下字段:

idno(primary), lastname, status, password, syearid(foreign)

我的问题是我必须在每个学校(syearid)存储未投票的学生:

sample

我有一张桌子可以存储已经投票的学生。我该如何跟踪未投票的学生?我应该另一张桌子吗?我的一个问题是,当学生在school_year(2015)或syearid(2000)注册并投票时,它将创建一个学生投票记录,当学生再次投票给下一个school_year时,它将在学生投票表中创建另一个记录,但我的问题如果学生一生中只能注册一次,那么如何存储一个未投票的学生(主要是我的idno,因此学生不能再重新注册,但学生在学校注册时的年龄相同)。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您不应该明确存储在某一年内没有投票的学生的记录。您可以简单地将学生加入投票表并检查是否为空。没有投票记录的学生将不会投票。我假设学生投票表中的syearid是投票年,而学生表中的syearid是学生开始上学的那一年。

SELECT s.* FROM student s
LEFT JOIN student_votes sv ON (s.idno = sv.idno AND sv.syearid = 2015)
WHERE sv.syearid IS NULL 

此外,假设只有特定年份的学生才有资格投票

SELECT s.* FROM student s
LEFT JOIN student_votes sv ON (s.idno = sv.idno AND sv.syearid = 2015)
WHERE sv.syearid IS NULL 
AND s.syearid IN (2012, 2013, 2014, 2015)