MySQL SELECT из нескольких таблиц с оператором if - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть две таблицы в базе данных, чтобы отслеживать, кто в данный момент находится на месте.Существует список всех сотрудников с указанием их номера, а также журнал входов / выходов часов.

Я пытаюсь создать ежедневный отчет о том, кто находится на месте, а кто отсутствует.Для этого я проверяю таблицу clock_log для всех записей с сегодняшней даты, например:

SELECT `Clock_Log`.Clock_Number, `Clock_Log`.Date, `Clock_Log`.Time_In,
`Clock_Log`.Time_Out, IF(`Clock_Log`.Shift_Ended = 0, 'On Site', 'Shift Ended') 
AS Status FROM `Clock_Log` WHERE Date = CURDATE();

, которая выводит что-то вроде:

Clock_Number | Date       | Time_In  | Time_Out | Status
123          | 2019-02-14 | 07:00:00 | 00:00:00 | On Site
456          | 2019-02-14 | 07:00:00 | 15:00:00 | Shift Ended

789          | 2019-02-14 | 00:00:00 | 00:00:00 | Absent

Что мне теперь нужно сделать, это выбратьвсе записи из списка всех сотрудников, которые не были синхронизированы на сегодняшний день, и добавьте их к результатам со статусом «Отсутствует».Как и третья запись выше.

Возможно ли это?Если нет, то можно ли добавить в конец дополнительный столбец, в котором просто перечислены числа, которые не синхронизированы?

1 Ответ

0 голосов
/ 14 февраля 2019

Используйте вашу таблицу персонала в качестве FROM, затем присоединитесь к этому запросу слева

Кроме того, псевдонимы

select t1.*, t2.*
from all_staff t1
left join 
    (
    SELECT t3.Clock_Number, 
           t3.Date, 
           t3.Time_In,
           t3.Time_Out, 
           IF(t3.Shift_Ended = 0, 'On Site', 'Shift Ended') AS Status 
    FROM `Clock_Log` t3 WHERE Date = CURDATE() 
    ) t2
on t1.clock_number = t2.clock_number
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...