2016-01-07 7 views
1

У меня есть таблица с именем student и имеет следующие поля:Должен ли я создать таблицу для отслеживания экземпляров «отсутствующих» записей?

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

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

sample

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

+1

несколько столбцов первичного ключа? Добавить столбец 0/1 для голосования/не проголосовали? Я действительно не понимаю, что вы написали. – Sebas

+0

учебный год - это моя проблема, когда студент зарегистрировался как 2015 год и проголосовал с этого года, он сохранит в другой таблице, который будет обрабатывать откровенный, idno, syearid, syearid будет обрабатывать тот студент, который уже проголосовал, и это не проблема, потому что он таблица, которая будет обрабатывать ученика, уже проголосовавшего, но у меня нет записей для ученика, который не проголосовал год –

ответ

0

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

Я попробую это –