2011-10-17 19 views
0

我有一個SQL查詢很多連接。事實是,在查詢必須加入StudentClass表和Class表之前,它輸出的行數應該是4行。但是當我包含Class和StudentClass表時,它仍然輸出4行時輸出6行。問題是,如果一個學生需要兩個模塊並且分爲兩個班級,那麼它會輸出4個模塊,即2個模塊重複,4個班級重複2個班級。爲什麼會發生這種情況,我設置表的方式有問題嗎?還是查詢?查詢輸出更多的記錄比它應該做的

下面是PHP代碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

    <head> 
    <title>Exam Grade Report</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    </head> 

    <body> 

    <?php 
     if (isset($_POST['submit'])) { 

     $query = " 
      SELECT * FROM Course c 
      INNER JOIN CourseModule cm ON c.CourseId = cm.CourseId 
      JOIN Module m ON cm.ModuleId = m.ModuleId 
      JOIN Session s ON m.ModuleId = s.ModuleId 
      JOIN Grade_Report gr ON s.SessionId = gr.SessionId 
      JOIN Student st ON gr.StudentId = st.StudentId 
      JOIN StudentClass sc ON st.StudentId = sc.StudentId 
      JOIN Class cl ON sc.ClassId = cl.ClassId 
      WHERE 
      ('".mysql_real_escape_string($sessionid)."' = '' OR gr.SessionId = '".mysql_real_escape_string($sessionid)."') 
      AND 
      ('".mysql_real_escape_string($courseid)."' = '' OR cl.CourseId = '".mysql_real_escape_string($courseid)."') 
      AND 
      ('".mysql_real_escape_string($moduleid)."' = '' OR cl.ModuleId = '".mysql_real_escape_string($moduleid)."') 
      AND 
      ('".mysql_real_escape_string($classid)."' = '' OR sc.ClassId = '".mysql_real_escape_string($classid)."') 
      AND 
      ('".mysql_real_escape_string($teacherid)."' = '' OR s.TeacherId = '".mysql_real_escape_string($teacherid)."') 
      AND 
      ('".mysql_real_escape_string($studentid)."' = '' OR gr.StudentId = '".mysql_real_escape_string($studentid)."') 
      AND 
      ('".mysql_real_escape_string($grade)."' = '' OR gr.Grade = '".mysql_real_escape_string($grade)."') 
      ORDER BY $orderfield ASC"; 

     $num = mysql_num_rows($result = mysql_query($query)); 
     mysql_close(); 

    ?> 

    </body> 
</html> 

我要顯示的查詢結果和我有一個word文檔了表。我怎樣才能附加一個單詞文件的方式,這樣你就可以打開單詞文件,如果你想?

謝謝

+0

這是代碼重載。嘗試最小化代碼量,並只顯示相關的代碼片段 –

+0

如果您要求SQL查詢問題,則不要包含5英里的PHP和HTML值......顯示導致問題的實際SQL,並可能是關於表結構的一些細節。 –

+0

你想分組什麼?學生? StudentClass?你想要提取什麼信息(你可能想用'SELECT [field],[field],[field]'替換'SELECT *',因爲這會1)減少返回的數據量並且2)給我們一個想要提取的信息)。 – Tom

回答

1

您是否嘗試將所有連接更改爲左連接?

相關問題