1

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

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

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

样本

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

4

1 回答 1

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)
于 2016-01-07T01:55:08.347 回答