Мне нужно сообщить, когда сотрудник не имеет времени, введенного в карточку времени, хранящуюся в таблице, называемой employee_time et.Найти записи на основе идентификатора, который не существует/не существует
Моя проблема заключается в том, чтобы найти людей, которые не указали время на указанную неделю.
Я использовал NOT IN, чтобы найти идентификаторы сотрудников, которых нет в таблице, поэтому, если запись не существует, время не было введено. Это хорошо работает.
Select
e.userName,
et.dateStart,
et.dateEnd
From employee_time et,
employee e
Where
e.employee_id NOT IN (Select employee_id from employee_time
where et.dateStart = date and
et.end_date = date)
Group by
e.userName,
et.startDate,
et.endDate
Проблема заключается в применении, когда человек переходит на страницу входа времени работника это создать запись для работника, если работник не входит в любое время результата является записью с нулем часов. Но запись теперь существует. Таким образом, не будет найдено в приведенном выше запросе, я использовал следующее, чтобы найти записи, в которых итоговые = 0
Select
e.userName,
et.dateStart,
et.dateEnd,
SUM(et.hoursTotal) AS total
From employee_time et,
employee e
Where
e.employee_id = et.employee_id and
et.hours_total = 0
Group by
e.userName,
et.startDate,
et.endDate
Это также работает хорошо, однако мне нужно жениться на них, но не увенчались успехом до сих пор. Вы можете помочь?
Что фактический выход вы хотите от «брака» этих двух запросов? –
Вы хотите обрабатывать записи с помощью 'hours_total' = 0, как будто их не было? 'where hours_total <> 0'? –
Мой желаемый результат - employee_ids, поэтому я могу получить доступ к имени пользователя и поместить его в отчет, в котором указанное лицо не вводит время. – Bman