0

テーブルleave_detailsには次の列が含まれます

1.従業員名

2.従業員ID

3.Leavefrom

4.レヴェート

5.休暇の種類(有給休暇・病気休暇)

6.退社状況(承認・否認)

従業員が休暇を申請するたびに、マネージャーによって承認または拒否されます。承認の問い合わせ

"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.従業員ID

3.有給休暇(例:20日)

4.病欠(例:5)

彼が休暇を申請し、leave_status承認されると、 employee テーブルの有給休暇病気休暇の列を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 に答える