我正在爲我的semestre考試建立一個應用程序,將在20天內進行。我的應用程序應該幫助教師更輕鬆地構建我們的教師時間表。艱難的SQL服務器加入查詢
我正在使用數據庫方法(Sql Server 2008和Delphi XE2)。我有幾張描述學生編隊結構的表格。所以我有Years
,Series
,Specializations
,Groups
和SemiGroups
。像在圖中Years
包含Series
, Series
包含Specializations
, Specializations
, 和Groups
可能包含或不包含SemiGroups
。我也有Courses
,Teachers
,ClassRooms
,Days
和HourlyIntervals
的表格。
有幾個條件:
教師可以參加課程與一個或多個專業化,或與一個或多個組,或者與一個或多個半羣。
的第二個條件是,課程3種類型的:TeachingCourse,學院,實驗室(從三種可能的對每個CourseName只有兩個)(存儲在列Scheduler.CourseType炭(3))
第三個:課程可以保持在一個學期的所有周,或在oddweek號碼,或在週數可分割由2(存儲在列Scheduler.Week炭(3))
所以我將相關性存儲在SchedulerTable中。
所以,如果一個集團有一定的教師,我將只推出相應的ID的過程。
我構建了幾乎所有的數據介紹表單,現在我在報表部分的應用程序。我正在使用MSSQL 2008中的報告服務。 我想列出一個調度程序,該調度程序將包含特定專業化(包括組和/或半羣)的所有相關性。我已經設法顯示屬於某些專業領域的小組的所有相關性,但我無法設法顯示專業化和半羣體課程。
這是一個查詢,它返回來自某個Specialization的組關聯。
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
但是我想讓它返回SemiGroups,Groups和Specialization的相關關係。我試圖用這個Scheduler.SemiGroupID = Semigroups.SemigroupID添加一個連接,但查詢返回0結果。我不知道是否可以做到我想要的,但我會感謝任何給我指出主意的人。或者我應該使用其他結構作爲我的關聯表(SchedulerTable
)。
This is a sample report(PDF文件),我想獲得:
編輯原因:更好的解釋這個問題
我刪除了Delphi XE2標籤,因爲這個問題與Delphi完全無關;這完全是一個SQL Server問題。 –
不確定我是否讓你獲得半羣每個專業化看起來是一個簡單的步驟,因爲你已經完成了每個專業的羣體。你可以把你所做的查詢放在問題中嗎? –
@Tony:我想感謝你對我的問題的興趣;我編輯它,並把我的查詢代碼。 –