【问题标题】:How to write a MySQL query to detect missing (absentee) records?如何编写 MySQL 查询来检测丢失(缺席)记录?
【发布时间】:2014-09-21 20:18:34
【问题描述】:

我被一个复杂的 MySQL 查询困住了。我有以下表格:

[employee]
id
name

[department]
id
name

[employee_department_relation]
id
employee_id
department_id

[attendance]
id
employee_id
date

注意:只有当员工在该日期在场时,才会记录出勤率。没有为旷工设置特定标志。

我需要查明,在特定日期哪个部门有多少员工缺勤。

到目前为止,我已经按照 SQL 完成了,但它并不完美:

SELECT A.date, 
(SELECT name FROM employee WHERE id = emp_id) AS employee,
(SELECT D.name AS dept_name
 FROM deptartment D
 INNER JOIN employee_department_relation R ON R.dept_id = D.id
 INNER JOIN employee E ON E.id = R.emp_id
 WHERE R.emp_id = A.emp_id
 ) AS dept
FROM attendance A
WHERE A.date = '2014-07-03'

我该如何继续?

【问题讨论】:

  • 自己尝试一下,然后寻求帮助。 这不是免费的编码服务
  • 你已经尝试了什么?请发布您的mysql方法,然后我们可以为您提供帮助。

标签: php mysql sql query-optimization


【解决方案1】:

随意尝试这个更改日期:

select employee.name, department.name from employee
left join employee_department_relation r on r.employee_id = employee.id
left join department on department.id = r.department_id
where employee.id not in (
    select employee_id from attendance where date = '2014-07-28'
)

【讨论】:

  • 它至少适用于基本版本。我将通过添加更多记录来尝试。谢谢。
猜你喜欢
  • 2019-08-05
  • 1970-01-01
  • 2019-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多