2011-10-25 33 views
0

我有一個表單,它在提交時會將輸入的數據輸出到表單中,並將其輸出到查詢結果中。如果文本框爲空,它將搜索該特定字段的所有數據。目前我的查詢輸出:查詢輸出比它應該做的更多的行,這是爲什麼?

SessionId  ModuleId  CourseId ClassId StudentUsername TeacherUsername Grade 
ABB   CHT2520  INFO101 104  u0867587   m.prigmore  A 
ABB   CHI2550  INFO101 101  u0867587   j.lu    A 
ABB   CHI2550  INFO101 104  u1231231   j.lu    F 
ABB   CHT2520  INFO101 101  u1231231   m.prigmore  F 
NVK   CHI2550  INFO101 101  u0867587   j.lu    F 
RMI   CHI2565  INFO101 102  u0660663   j.forden   F 

它正在輸出更多的行,然後它應該這樣做。一個學生屬於同一個班級的一個單元。問題在於它顯示一個學生屬於兩個班級,因爲一個模塊不正確。它這樣做的原因是因爲它根據學生正在學習的模塊來識別學生所在的班級。

因此,如果模塊'CHI2550'有兩個班級,任何需要模塊'CHI2550'的學生被分配到兩個班級,但應該是一個班級的學生被分配到一個班級,並且應該由'StudentClass'表。問題是,如果我在其中一個JOINS中包含'StudentClass',則查詢輸出9行。

查詢應的輸出這樣的:

SessionId  ModuleId  CourseId ClassId StudentUsername TeacherUsername Grade 
    ABB   CHI2550  INFO101 101  u0867587   j.lu    A 
    ABB   CHI2550  INFO101 104  u1231231   j.lu    F 
    NVK   CHT2520  INFO101 103  u0867587   m.prigmore  F 
    RMI   CHI2565  INFO101 102  u0660663   j.forden   F 

我怎樣才能得到查詢到輸出上面的結果呢?下面是查詢:

​​

下面是每個表和它們的數據(因爲我所面臨的問題,最重要的表是StudentClass,班,學生,模塊):

Course Table: 

CourseId   CourseName           Duration 
INFO101   Bsc Information Communication Technology (ICT)   3/4 

CourseModule Table: 

CourseId  ModuleId 
INFO101  CHI2550 
INFO101  CHI2565 
INFO101  CHT2520 

Module Table: 

ModuleId   ModuleName         Credits 
CHT2520   Advanced Web Programming      20 
CHI2565   E-Commerce Business and Technology    20 
CHI2550   Modern Database Applications     20 

Session Table: 

SessionId ModuleId Semester SessionDate SessionTime TeacherId Room  Building 

NVQ  CHT2520  Spring 2011-03-21 13:00:00  T2  CW2/04 Canalside West 
NVK  CHT2520  Fall  2011-11-10 10:00:00  T2  CW2/04 Canalside West 
RMI  CHI2565  Fall  2011-09-13 12:00:00  T5  CW5/01 Canalside West 
RMT  CHI2565  Spring 2011-03-29 14:00:00  T2  CW2/04 Canalside West 
ABB  CHI2550  Spring 2011-03-15 12:00:00  T1  CW4/10 Canalside West 
ABH  CHI2550  Summer 2011-05-03 15:00:00  T4  CW4/10 Canalside West 

Grade_Report Table: 

StudentId SessionId Grade Mark 
S1   NVK   F  5 
S2   ABB   A  80 
S1   ABB   A  80 
S3   RMI   F  0 

Student Table: 

StudentId StudentForename  StudentSurname Year StudentUsername CourseId 
S1   Mayur     Patel   3  u0867587   INFO101 
S2   Jim     Carlton   3  u1231231   INFO101 
S3   Ahmed     Seedat   3  u0660663   INFO101 
S4   Amar     Barot   3  u0954857   INFO101 
S5   Richard    Davies   3  u0877223   INFO101 

StudentClass Table: 

ClassId StudentId 
101  S1 
102  S3 
103  S1 
104  S2 


    Class Table: 

ClassId Room  ClassDay  ClassTime  ModuleId  CourseId  TeacherId 
101  CW4/10 Thursday  10:00:00  CHI2550  INFO101   T1 
102  CW5/01 Wednesday  12:00:00  CHI2565  INFO101   T5 
103  CW2/04 Monday   15:00:00  CHT2520  INFO101   T2 
104  CW4/10 Thursday  11:00:00  CHI2550  INFO101   T1 


Teacher Table: 

TeacherId TeacherForename TeacherSurname TeacherUsername TeacherPassword 
T1   Joan   Lu    j.lu    scomp21 
T2   Martyn   Prigmore  m.prigmore  prigmore36 
T3   Arshard   Ali    a.ali   aliict 
T4   Paul   Judge   p.judge   data01 
T5   John   Forden   j.forden   hudds_10 

回答

0

我會被啓動將查詢更改爲單個表查詢,並確保從中獲得所需內容,然後每次添加一個表,直到重複行開始顯示。

我最好的猜測是你有一對你需要在兩個字段而不是一個字段上連接的表,並且單個字段連接匹配連接表中的多個行,從而產生額外的行在你的輸出中。

另一種可能性是,您有一個表中有重複行信息導致重複結果。

CourseModule表可能是這個問題在兩種情況下...

這是很難看到你的問題,以及要求它是精確的分辨率,因爲有大量的表格和許多加入...

相關問題