Должен ли я создать таблицу для отслеживания случаев "пропущенных" записей?

У меня есть стол student и имеет следующие поля:

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

Моя проблема заключается в том, что я должен хранить студентов без голосования в каждом school_year(syearid):

образец

У меня есть таблица, в которой хранятся студенты, которые уже проголосовали. Как я должен отслеживать студентов без голосования? Должен ли я сделать еще один стол? Одна из моих проблем заключается в том, что когда ученик регистрируется в school_year (2015) или syearid (2000) и голосует, он создает запись голосования ученика, когда ученик снова голосует за следующий school_year, он создает другую запись в таблице голосов ученика, но мой вопрос как сохранить студента без права голоса, если студент может зарегистрироваться только один раз в жизни (первичным является мое удостоверение личности, поэтому студент больше не может регистрироваться снова, но школьный год студента остается неизменным, когда он / она зарегистрировался). Что я должен делать?

1 ответ

Вам не нужно явно хранить записи о студентах, которые не голосовали в течение определенного года. Вы можете просто присоединить студентов к таблице голосования и проверить на нулевое значение. Студенты, не имеющие результатов голосования за данный год, не будут голосовать. Я предполагаю 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)
Другие вопросы по тегам