每次激活查询时,将特定列值减1

时间:2013-01-04 09:03:19

标签: php mysql

leave_details 包含以下列

  

1.员工姓名

     

2.员工ID

     

3.Leavefrom

     

4.Leaveto

     

5.Leavetype (获休假/病假)

     

6.Leavestatus (已批准/已拒绝)

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

  

“UPDATE leave_details join managerlogin on managerlogin.manager_id = leave_details.manager_id SET leave_details.leave_status ='Approved'where where(employee_id ='$ myemployee_id'and managerlogin.manager_id ='”。$ _ SESSION ['mymanager_id']。“' )“;

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

我还有一个名为员工的表格,其中包含员工的总体获得休假病假余额。 Employee表包含以下列

  

1.员工姓名

     

2.员工ID

     

3.Earned leave(例如20)

     

4.Sick leave(例如5)

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

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

1 个答案:

答案 0 :(得分: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>

会做到这一点。