0

leave_details包含以下列

1.员工姓名

2.员工证

3.离开

4.离开

5.Leavetype (带薪休假/病假)

6.Leavestatus (批准/拒绝)

每当员工申请休假时,经理都会批准或拒绝。查询审批

"UPDATE leave_details join managerlogin on managerlogin.manager_id=leave_details.manager_id SET leave_details.leave_status='Approved' where (employee_id='$myemployee_id' and managerlogin.manager_id='".$_SESSION['mymanager_id']."' )";

这会将leave_status列更改为“已批准”

我有另一个名为员工的表,其中包含员工的总带薪休假病假余额。员工表具有以下列

1.员工姓名

2.员工证

3.带薪休假(例如20)

4.病假(例5)

当他申请休假并且当leave_status获得批准时,员工表中的带薪休假病假列应减少 1(例如,如果他申请带薪休假,则该特定员工列的值应减少 1 [此处20-1=19] ,当他下次申请时 [19-1=18] 应该继续)。

怎么做。请帮忙。提前致谢

4

1 回答 1

2

更新员工表中的休假权利是一个糟糕的设计 - 因为一旦更改,您就没有关于它们是什么的进一步参考;并且没有关于何时采取的时间参考。

所以我建议将leave_details表状态中的记录更改为已使用 - 然后计算从 leave_details 表中使用的天数以确定剩余的休假天数,例如查找 2011 年休假的天数

select sum(datediff(leaveto,leavefrom)) as days_leave_taken 
from leave_details 
where employeeid = 1000
      and leavefrom between '2011-01-01' and '2011-12-31 23:59'

但是,如果您必须更新员工表;

UPDATE Employee SET EarnedLeave = EarnedLeave - 1 WHERE EmployeeID = <Id>

会成功的。

于 2013-01-04T09:12:33.663 回答