我正在为我的学期考试建立一个申请,该考试将在 20 天内进行。我的应用程序应该可以帮助教师更轻松地制定我们的教师时间表。
我正在使用数据库方法(Sql Server 2008 和 Delphi XE2)。我有几张描述学生编队结构的表格。所以我有Years
, Series
,Specializations
和. 就像图像中的包含、包含、包含和可能包含或不包含。我也有带有, ,和的表格。Groups
SemiGroups
Years
Series
Series
Specializations
Specializations
Groups
Groups
SemiGroups
Courses
Teachers
ClassRooms
Days
HourlyIntervals
有几个条件:
教师可以学习一门或多门专业课程,或一个或多个小组,或一个或多个半小组的课程。
第二个条件是课程有 3 种类型:教学课程、神学院、实验室(每个课程名称只有三种可能的两种)。(存储在 Scheduler.CourseType char(3) 列中)
第三个:课程可以保存在一个学期的所有周数,或以奇数周数,或可被2整除的周数。(存储在Scheduler.Week char(3)列中)
所以我将相关性存储在 SchedulerTable 中。
因此,如果一个小组有某位老师的课程,我将只介绍相应的 ID。
我构建了几乎所有的数据介绍表格,现在我在应用程序的报告部分。我正在使用 MSSQL 2008 中的 Report Services。我想列出一个调度程序,该调度程序将包括某个专业化的所有相关性(包括组和/或半组)。我已经设法展示了属于特定专业的组的所有相关性,但我无法展示专业和半组课程。
这是从某个专业化返回我组相关性的查询。
SELECT Days.DayName, HourlyIntervals.HourlyIntervalName, Scheduler.Week, Scheduler.CourseType, Courses.CourseName, ClassRooms.ClassRoomName, Teachers.TeacherName,Specializations.SpecName, Groups.GroupsName
FROM Scheduler INNER JOIN
Groups ON Scheduler.GroupID = Groups.GroupID INNER JOIN
Days ON Scheduler.DayID = Days.DayID INNER JOIN
HourlyIntervals ON Scheduler.HourlyIntervalID = HourlyIntervals.HourlyIntervalID INNER JOIN
Teachers ON Scheduler.TeacherID = Teachers.TeacherID INNER JOIN
Courses ON Scheduler.CourseID = Courses.CourseID INNER JOIN
ClassRooms ON Scheduler.ClassRoomID = ClassRooms.ClassRoomID INNER JOIN
Specializations ON Groups.IDSpec = Specializations.IDSpec
WHERE (Specializations.ID = @SpecID)
ORDER BY Days.DayID, HourlyIntervals.HourlyIntervalID
但我希望它返回特定专业化的半组、组和专业化的关联。我试图用这个 Scheduler.SemiGroupID=Semigroups.SemigroupID 添加一个连接,但查询返回 0 结果。我不知道它是否可以完成我想要的,但我会感谢任何给我指出想法的人。或者我应该为我的相关表 ( SchedulerTable
) 使用另一种结构。
这是我想获得的示例报告(PDF 文件):
编辑原因:更好地解释问题