我有3个表MySQL的左连接和内连接
雇员=> E_ID(PK),dep_id(FK)
部=> D_ID(PK)
考勤=> ID(PK ),date_of_absence(DATE),e_id_f(FK)
我想知道特定部门的缺席员工人数。
我创建一个名为MyDates
CREATE TABLE MyDates (mydate date);
表和此过程,以填补与日期MyDates表
CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE)
BEGIN
WHILE dateStart <= dateEnd DO
INSERT INTO MyDates (mydate) VALUES (dateStart);
SET dateStart = date_add(dateStart, INTERVAL 1 DAY);
END WHILE;
END;
然后我调用的过程来填充MyDates与日期CALL filldates('2017-01-01','2017-03-31');
然后我做了这个选择语句:
select mydates.mydate, count(attendance.date_of_absence)
from mydates left join attendance on
mydates.mydate = attendance.date_of_absence
where mydates.mydate Between "2017-01-01" AND "2017-01-31"
group by mydates.mydate
这个查询得到我所需要的,但所有的部门,但对于某个部门的行数不正确,
select mydates.mydate, count(attendance.date_of_absence)
from mydates
left join attendance on mydates.mydate = attendance.date_of_absence
inner join employee on attendance.e_id_f = employee.e_id
where mydates.mydate Between "2017-01-01" AND "2017-01-31" AND employee.dep_id = 4
group by mydates.mydate;
这是一张截图 IMG
你可以添加你需要的数据和你以样本形式得到的结果集。 – meet
当然,请看看上面添加的截图。 –