【发布时间】:2014-12-27 08:21:17
【问题描述】:
我正在为一个教堂开发一个出勤监控数据库应用程序,其目标是获取每个成员的连续出席和缺席情况。但连续计数将基于周
例如,我们每周有 3 次服务(周一一次、周三一次和周五一次),但这些服务是相同的,(唯一的区别是时间/日期)。因此成员可以参加任何这些会议(如果他们愿意,他们可以参加所有会议)
例如,我必须根据周查找每个成员的连续出席和缺勤情况 如果我在 2014 年 12 月的出勤率是:
S M T W T F S
W1 - P - P - - -
W2 - P - - - - -
W3 - P - P - P -
W4 - - - - - P -
W5 - P - - - - -
我有 5 个连续的礼物 我必须每周只计算一次出席(任何其他出席都将被忽略)
这是桌子
tbl_members
member_id last_name first_name ... and so on
1 SANTIAGO JOHN KERNELLE
tbl_service_attendances
att_index service_date member_id
1 2014-12-01 1
2 2014-12-03 1
3 2014-12-08 1
4 2014-12-15 1
5 2014-12-17 1
6 2014-12-19 1
7 2014-12-26 1
8 2014-12-29 1
att_index 是自动递增的
对于每一个成员的出席,我使用这个查询:
INSERT INTO tbl_service_attendances(service_date, member_id) VALUES('2014-12-29', 1)
如果他们在一周内参加了 8 次服务,则 tbl_service_attendances 中的每一项将有 8 行(唯一的区别是他们的日期)。但它只会算作 5 个连续礼物。 (每周一次)
S M T W T F S
W1 - P - P - - -
W2 - P - - - - -
W3 - P - P - P -
W4 - - - - - - -
W5 - - - - - - -
在这种情况下,我有 2 次连续缺席,
我还必须知道连续词是在场还是不在场
请帮忙,提前谢谢
到目前为止,我通过循环查询完成了我的目标,但我认为循环多个查询是不可取的
【问题讨论】:
-
请使用哪个 RDBMS(Sql Server、MySql、Oracle 等)
-
你为什么关心谁出现?
-
@Strawberry,在我们的教会,如果有成员连续两周或以上缺席,他们将被列入需要探视的名单,一些接近他们的成员会探访他们以了解是否他们有问题