我在寫一個管理員工資料的網頁,有一個指定項目,我一直完成不了!想請各位大大幫忙解答一下⋯⋯
例:有位同仁離職,我要做刪除他的員工資料,但是在MySQL(phony admin) ?他這筆資料只是被隱藏,並備註為"離職",當我在網頁查詢他時,會顯示此員工已離職,這樣要怎麼寫呢?
可以簡單直接按你想法一步步做,
"這筆資料只是被隱藏"
在MYSQL 加一個欄位"是否隱藏"(display), 用數值01比較節省空間, 用中文也可。
之後,Select資料個時可以加一條件在後面, select * from table where display = '1';
備註為"離職"
在MYSQL 加一個欄位"備註"(Remark), 用英文比較節省空間, 用中文也可。
當我在網頁查詢他時,會顯示此員工已離職
在MYSQL 加一個欄位"在職狀態"(status), 數值01比較節省空間, 用中文直接寫已離職也可。
事後可以優化結合, 也可以直接分多幾欄, 反正老闆只看結果。
那你將該員工資料表新增一個欄位,該欄位是用來記錄在職狀況,如為 0 為已經離職,而為 1 則是在職中,你在 SELECT 員工資料的時候就可以依照該欄位做判斷,也記得在顯示在職員工清單時,要以在職中的條件進行搜尋。
員工離職,但資料還是要保留,因為有可能所得稅什麼的都還要處理。
可以利用離職日期欄位,例如欄位名為Left_Date,另外,還應該有到職日期,例如欄位名稱Arrive_Date。
如果這個欄位不是空白,或是晚於到職日期就代表離職。
基本上,我不太喜歡在欄位裏塞NULL值,所以日期欄位我會預設1900/1/1,因此....可以這樣寫:
Select ....., CASE WHEN Left_Date > "1900/1/1" AND Left_Date >= Arrive_Date THEN "離職" ELSE "在職" END As Job_Status, ..... From Employee Where .....
這樣,取出的員工記錄會多一欄位Job_Status,把這個欄位顯示出來就行了。
這個欄位可以當成其他欄位一樣在程式中應用的。
另外,為什麼會是Left_Date >= Arrive_Date呢?大於或等於?因為有些人到職當天就離開了,這樣子的員工資料還是要保留,以免日後有什麼爭議,資料被刪就找不到了。