У меня есть таблица сотрудников, в которой хранится основная информация, такая как имя, фамилия и т. Д. Каждому сотруднику присваивается уникальный идентификатор.
У меня есть две таблицы: rwh_clock_in
и rwh_clock_out
, которые выглядят какнапример:
id (int) 255 PRIMARY A_I
atTime (timestamp) DEFAULT_TIMESTAMP
userid (int) 255
Я пытаюсь выбрать информацию о пользователях из базы данных, а затем также проверить, включен ли пользователь или нет.
SELECT employee.forename, employee.surname, employee.contactNumber, employee.contactEmail
(CASE WHEN clockin.atTime > clockout.atTime THEN 0 ELSE 1 END) AS 'clockedIn'
FROM rwh_employers employee
LEFT JOIN rwh_clock_in clockin
ON employee.id = employee.id AND employee.id = clockin.userid
LEFT JOIN rwh_clock_out clockout
ON employee.id = employee.id AND employee.id = clockout.userid AND clockin.userid = clockout.userid
WHERE employee.id = 1
Однако я получаюошибка SQL, которая гласит:
1305 - ФУНКЦИЯ employee.contactEmail не существует
Моя таблица rwh_employers
на самом деле имеет столбец contactEmail
, который является VARCHAR(120).
Я думал об этом логически, я не буду знать, отключился ли пользователь или нет, если я не проверю, есть ли какие-либо строки после atTime
от rwh_clock_in
в rwh_clock_out
.Итак, мне нужно сначала проверить, нет ли каких-либо выходов из этого идентификатора пользователя по истечении времени.Если он существует, то пользователь не синхронизируется, если нет, то пользователь синхронизируется.
Любая помощь будет принята.
ОБНОВЛЕНИЕ:
SELECT employee.forename, employee.surname, employee.contactNumber, employee.contactEmail, clockin.atTime,
(CASE WHEN clockin.atTime < clockout.atTime THEN clockout.atTime ELSE NULL END) AS 'clockOut'
FROM rwh_employers employee
LEFT JOIN rwh_clock_in clockin
ON employee.id = employee.id AND employee.id = clockin.userid
LEFT JOIN rwh_clock_out clockout
ON employee.id = employee.id AND employee.id = clockout.userid AND clockin.userid = clockout.userid
WHERE employee.id = 1
ORDER BY clockout.atTime ASC LIMIT 1
Теперь clockout
всегда равен NULL, даже когда пользователь выключен