mysql - 我应该创建一个表来跟踪 "missing"记录的实例吗?

标签 mysql database system-analysis

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

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

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

sample

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

最佳答案

您不需要明确存储在给定年份没有投票的学生的记录。您只需将学生加入投票表并检查是否为空。没有给定年份的投票记录的学生将不会投票。我假设学生投票表中的 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)

关于mysql - 我应该创建一个表来跟踪 "missing"记录的实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34645951/

相关文章:

php - 在 php 代码上注入(inject) SQL

use-case - 我应该将编辑和删除作为用例吗?

database - ms Access 转储到 sql 插入

software-design - 移动 Web 应用程序的功能性需求与非功能性需求

mysql - 将数据分布在MySQL数据库的多个表中?

php - 连接表并用指定值替换空值

php - PDO查询优化

c# - 使用 System.Data.Common 的参数命名

android - SQLite 没有这样的列