【发布时间】:2019-07-13 23:34:40
【问题描述】:
我有三张表员工,晋升和惩罚 员工的表结构是这样的
Id int
Fullname varchar
...............
promotionDate date
Promotion的表结构是这样的 id int emp_id 整数 董事会日期日期
而惩罚的表结构是这样的
id int
emp_id int
direcotorateDate date
假设员工表有200条记录,每个月有一组员工升职(任职一年后),我想获取当月所有升职员工的名单 我可以通过这个查询轻松获取列表
SELECT *
FROM employee
WHERE MONTH(promotionDate) = MONTH(CURRENT_DATE())
AND YEAR(promotionDate) = YEAR(CURRENT_DATE())
我的问题是 我想分别从惩罚和晋升表中计算每个员工在本年度获得的惩罚和晋升次数 我做了这个查询,但没有得到正确的结果
SELECT e.fullname , COUNT(punish.emp_id) as siza ,COUNT(pro.emp_id) as supas
FROM emp_employee as e
LEFT JOIN emp_punishment as punish on punish.emp_id=e.id
LEFT JOIN emp_promotion as pro on e.id=pro.emp_id
WHERE ((MONTH(e.promotionDate) = MONTH(CURRENT_DATE())
AND YEAR(e.promotionDate) = YEAR(CURRENT_DATE()))
AND ( YEAR(punish.directorate_date) = YEAR(CURRENT_DATE()) )
AND ( YEAR(pro.directorate_date) = YEAR(CURRENT_DATE()) )
GROUP BY e.fullname;
请帮忙。
【问题讨论】: