重组考勤表逻辑

时间:2016-12-26 06:52:03

标签: c# sql-server

出勤表

 id | rollno  | faculty | date       | PresentAbsent
 ---|---------|---------|------------|--------------
  1 |  RP1201 | ABC     | 12/12/2016 | P
  2 |  RP1202 | ABC     | 12/12/2016 | A

离开表

  Lid | rollno | startdate  | enddate    | full-half-day | time
  ----|--------|------------|------------|---------------|---------------
    1 | RP1201 | 11/12/2016 | 12/12/2016 | fullday       | Not applicable
    2 | RP1202 | 12/12/2016 | 12/12/2016 | halfday       | 10.30-11.30

必填报告

rollno | totallecture | totalpresent | totalabsent | totalleave | withoutLeave% | withLeave%
-------|--------------|--------------|-------------|------------|---------------|-----------
RP1201 | 12           | 6            | 6           | 2          | 50%           | 66.66%          

从上面的表逻辑开始它工作正常,但表项增加需要更多时间来计算报告。

  

请帮我更改帮助我执行报告的表格逻辑   在几秒钟内

请欣赏任何其他建议

2 个答案:

答案 0 :(得分:2)

  1. Leave表格中,使用trigger。每当插入新的假,此触发器将使用AttendancePresentAbsent=A更新FD的{​​{1}}表。
  2. 现在,在创建报告时,请考虑以下HDFD来计算HDTotalAbsent
  3. 如果您能够找出报告查询,则此添加将对其进行一些修改。希望我很清楚。如果您有任何疑问,请在评论中告诉我。

答案 1 :(得分:2)

做这样的事情。

创建离开表格,其中包含总休假天数。半天,使用卷号的可以是0.5是外键。 像这样的东西

  Lid | rollno | startdate  | enddate    | full-half-day | time          |numberofdays
  ----|--------|------------|------------|---------------|---------------|------------
    1 | RP1201 | 11/12/2016 | 12/12/2016 | fullday       | Not applicable|2
    2 | RP1202 | 12/12/2016 | 12/12/2016 | halfday       | 10.30-11.30   |0.5

在那个查询之后它就像这样(我正在写一个伪代码)。

select sum(days-of-leave) from LeaveTable where rollnumber=rp1001

总缺席和现在这样做。

select count(presentabsent) as absent from attendence
where rollnumber=rp1001 and presentabsent=A
相关问题