我在c#中编写了一个Windows窗体应用程序,为员工创建存在/延迟日志,现在我尝试向该应用程序添加一项功能,该功能执行以下操作:
更清楚地说明:
ID - 名称----------存在-----延迟
1 - SAM -------------- 1 ---------- 0 ---
2 - 插孔------------- ---------- 0 0 ---
3 - ted -------------- 1 ---------- 1 ---
日---------------本---- -----延迟不存在
14/10/2012 --------- -------- SAM泰德-------插孔
------------------------泰德---------------------- -
等等,我希望我的想法清楚。第二张表怎么样,关系怎么样?
我将如何查看日期表中的结果?
答案 0 :(得分:1)
--Person-- --Presence-- --Delay--
ID ID ID
Name Date Date
// other info PersonID PersonID
IsPresent
首先,您应该单独保留Person
表,并在其他表中使用ID
。我强烈建议您阅读data redundancy和database normalization。其他表中的PersonID
引用ID
表中的Person
。
我认为应该记录Presence
每天。如果当天晚些时候只显示Delay
,则应记录Person
。
答案 1 :(得分:0)
你可能想做这样的事情,可能不是100%,但应该让你朝着正确的方向前进。遇到任何其他问题,让我知道将有所帮助,因为我可以
表:员工{Id,Name} table:记录{EmployeeId,DateCreated,OnTime(如果迟到则为bit false)}
select Name
Status = CASE WHEN OnTime = 1 THEN "On Time"
WHEN OnTime is null THEN "Absent"
ELSE "Late"
from Employees as e
left join Logs as l
on e.Id = l.EmployeeId
Where l.DateCreated = @aDate
or l.DateCreated is null
以您希望的方式显示数据,然后根据需求成为报表引擎或数据透视表的任务