好的伙计们,我对这件事感到极限。我有一个查询,指的是一个单独的实际考勤表查询(qryEventDates)和一个预定的考勤表(出勤时间表)。到目前为止,该查询一直有效,直到学生(EventID)具有多个计划(计划生效日期)。我输入了一个标准,将输出限制为< =到出勤日期(EventDate)的时间表,但是一旦学生有多个时间表,它就会显示旧时间表和新时间表。 (见图像链接)。
我基本上试图让它只显示每个学生当天应该活动的出勤时间表。我尝试了很多查询(热门查询等)和其他方法,但这是我迄今为止最接近的。请参阅下面的MS Access SQL查询:
SELECT q.EventID, q.EventDate, s.[Schedule Effective Date], s.SunOC, s.SunDE, s.MonOC, s.MonDE, s.TueOC, s.TueDE, s.WedOC, s.WedDE, s.ThuOC, s.ThuDE, s.FriOC, s.FriDE, s.SatOC, s.SatDE
FROM [Attendance Schedule] AS s RIGHT JOIN qryEventDates AS q ON s.Schedule_FK_Student_ID = q.EventID
WHERE (((s.[Schedule Effective Date])<=[EventDate]))
ORDER BY q.EventID, q.EventDate;
如果需要,我愿意改变设置......这是我尝试解决的最后一件事。请放轻松我,我是自学成才,我主要知道Access作为最终用户,而不是数据库程序员。
如果需要更多信息,请与我们联系。任何帮助表示赞赏。非常感谢你。
答案 0 :(得分:0)
EventID是StudentID吗? [计划生效日期]和[活动日期]之间有什么区别? 我建议用文字解释你想要解决的问题......也许不同的数据库设计会有所帮助。
答案 1 :(得分:0)
我正在进行推理,但这样的事情会有所帮助:
SELECT q.StudentID, q.EventDate, s.[Schedule Effective Date]
FROM qryEventDates AS q INNER JOIN [Attendance Schedule] AS s
ON q.StudentID = s.Student_ID
WHERE (((s.[Schedule Effective Date])=
(SELECT MAX([Schedule Effective Date]) FROM [Attendance Schedule] A
WHERE A.[Student_ID]=s.[Student_ID] AND A.[Schedule Effective Date] <= [EventDate])))
ORDER BY q.EventDate
第一个月的结果:
StudentID EventDate Schedule Effective Date
ST-AAR0000 2016-01-19 2016-01-19
ST-AAR0000 2016-01-20 2016-01-19
ST-AAR0000 2016-01-21 2016-01-19
ST-AAR0000 2016-01-22 2016-01-19
ST-AAR0000 2016-01-23 2016-01-19
ST-AAR0000 2016-01-24 2016-01-19
ST-AAR0000 2016-01-25 2016-01-19
ST-AAR0000 2016-01-26 2016-01-19
ST-AAR0000 2016-01-27 2016-01-19
ST-AAR0000 2016-01-28 2016-01-28
ST-AAR0000 2016-01-29 2016-01-28
ST-AAR0000 2016-01-30 2016-01-28
ST-AAR0000 2016-01-31 2016-01-28