2011-10-18 68 views
0

看一下下面的代碼兩個領域:合併一起使用PHP和MySQL

$query = " 
      SELECT * FROM Question q 
      INNER JOIN StudentAnswer sa ON q.QuestionId = sa.QuestionId 
      JOIN Answer a ON sa.QuestionId = a.QuestionId 
      WHERE 
      ('".mysql_real_escape_string($sessionid)."' = '' OR q.SessionId = '".mysql_real_escape_string($sessionid)."') 
      AND 
      ('".mysql_real_escape_string($questionno)."' = '' OR q.QuestionNo = '".mysql_real_escape_string($questionno)."') 
      AND 
      ('".mysql_real_escape_string($studentid)."' = '' OR sa.StudentId = '".mysql_real_escape_string($studentid)."') 
      AND(CorrectAnswer = '1') 
      ORDER BY $orderfield ASC"; 
while ($row = mysql_fetch_array($result)) { 
      echo " 
     <tr> 
     <td>{$row['SessionId']}</td> 
     <td>{$row['QuestionNo']}</td> 
     <td>{$row['QuestionContent']}</td> 
     <td>{$row['AnswerContent']}</td> 
     <td>{$row['StudentAnswer']}</td> 
     <td>{$row['Weight%']}</td> 
     <td></td> 
     <td>{$row['StudentId']}</td> 
     </tr>"; 
     } 
     ?> 

每一行都是從我的數據庫表中的字段。有2行我很感興趣,它們是:

<td>{$row['AnswerContent']}</td> 
      <td>{$row['StudentAnswer']}</td> 

的Answercontent行僅針對我在WHERE查詢子句中提到的正確答案的詞來回答。但是,在數據庫表中的實際情況中,AnswerContent字段包含每個單個answerid都有單詞答案的行。

studentanswer是一個id(studentanswerid),用於學生選擇的任何答案。我想要的是,對於StudentAnswer行,我不希望它顯示id號碼,例如10,5,2,而是我想用詞顯示學生答案,例如,橙色,藍色,紫色。所以我想知道的是如何將AnswerContent和StudentAnswer合併到一起,以便無論StudentAnswer是什麼,它都會以'StudentAnswer'字段的單詞形式顯示,而不是以id形式顯示。

謝謝

+0

可能重複的[如何合併字段在一起,並顯示輸出在PHP和SQL](http://stackoverflow.com/questions/7809051/how-to-merge-fields-together-and-display-output-in -php-and-sql) –

+0

配音? http://stackoverflow.com/questions/7809051/how-to-merge-fields-together-and-display-output-in-php-and-sql – CodeReaper

+0

你已經問過這個,並得到了一個有效的答案。不要轉發問題。 –

回答

0

不要SELECT * FROM table。只獲取你想要的字段。選擇所有列不管是否降低可維護性並增加數據庫服務器的負載。

如果您不喜歡this answer,您可以隨時在while循環中執行第二個查詢,您可以從中獲取與StudentAnswer匹配的答案的文本內容。然而,這不會像你以前的問題那樣有效。

沒有您的模式的任何精確定義,編寫一個針對您的問題量身定製的實際查詢會有點困難。

+0

表已加入。 AnswerContent在答案表中,StudentAnswer在studentAnswer表中。 – BruceyBandit

+0

我明白了,誤解了這個問題。 –