2013-05-24 2 views
0

Я разрабатываю веб-часы для школы для входа в систему как для студентов, так и для персонала.mysql просмотр содержит текущий статус

У меня есть две таблицы:

student_time_clock: student_id (foreign key to student), time_stamp, by_adult_id (foreign key to adult) 

staff_time_clock: staff_id (foreign key to staff), time_stamp 

Одним из требований, я был дан в том, что наблюдатель сможет увидеть записи в одной точке зрения, как следующее:

+----------+------------+-------------------------+---------------------+ 
| In/Out | Time Stamp | Person Logged in or out | Logged in or out by | 
+----------+------------+-------------------------+---------------------+ 

Я могу сделать все, кроме первого столбца с объединением. Однако я не могу понять, как получить этот первый столбец. Вот запрос, я использую для объединения:

SELECT stc.entry        AS "Time Stamp", 
     Concat(s.lastname, ",", s.firstname) AS "Punched", 
     Concat(a.lastname, ",", a.firstname) AS "By" 
FROM student_time_clock stc, 
     student s, 
     adult a 
WHERE stc.student_id = s.id 
     AND stc.by_adult_id = a.id 
UNION 
SELECT atc.entry        AS "at", 
     Concat(a.lastname, ",", a.firstname) AS "Staff", 
     Concat(a.lastname, ",", a.firstname) AS "By" 
FROM staff_time_clock atc, 
     staff s, 
     adult a 
WHERE atc.staff_id = s.id 
ORDER BY "time stamp" DESC; 

Я попытался с помощью СЛУЧАЯ, такие как:

CASE COUNT(entry) % 2 WHEN 1 THEN "In" WHEN 0 THEN "Out" 

Когда этот случай есть, хотя я получаю только одну строку в результате ,

Любые предложения? Передняя часть находится на PHP, но я хотел бы создать это как представление в базе данных.

+0

А где остальная часть вашего запроса? – Kermit

+0

Обновлен вопрос, чтобы показать мой текущий запрос на объединение. Не уверен, как добавить CASE. –

+0

Вы уверены, что хотите использовать 'UNION' здесь? – Kermit

ответ

0

Я думаю, что лучше добавить столбец флага в первую таблицу, чтобы захватить тип или запись, например, «В» или «Выход». Это может упростить ваш запрос с определенным результатом.

+0

Я рассмотрел это, и я могу реализовать его, как вы предлагаете. Если я могу избежать хранения данных, которые могут быть рассчитаны на лету, хотя я бы предпочел это. –

+0

@ HudsonHallenbeck Не уверен, но рассмотрите (если применимо) еще один сценарий при работе с вычислением. Если в одной записи «в» или «вне» есть беспорядок, он покажет все неправильные результаты. Помещение бит-ориентированного столбца флага не будет использовать большую часть пространства, но приведет к окончательной и более простой логике/запросу. –

Смежные вопросы