使用php和mysql将两个字段合并在一起

时间:2011-10-18 15:13:49

标签: 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>";
        }
      ?>

每一行都是我数据库表中的一个字段。我感兴趣的有两行是:

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

Answercontent行是正确答案的单词answer,我在查询的WHERE子句中提到过。但是在数据库表的真相中,AnswerContent字段包含的行,其中每个answerid都有单词答案。

对于学生选择的答案,studentanswer是一个id(studentanswerid)。我想要的是,对于StudentAnswer行,我不希望它显示身份证号码,例如10,5,2,而是我想通过单词显示学生的答案,例如橙色,蓝色,紫色。所以我想知道的是如何将AnswerContent和StudentAnswer合并在一起,这样无论StudentAnswer是什么,它都会通过'StudentAnswer'字段中的单词形式显示,而不是以id形式显示。

谢谢

1 个答案:

答案 0 :(得分:0)

不要SELECT * FROM table。只获取您想要的字段。选择所有列都会降低可维护性并增加数据库服务器的负载。

如果您不喜欢this answer,则可以随时在while循环中执行第二次查询,在该循环中,您可以获取与StudentAnswer匹配的答案的文字内容。但是,这不会像你上一个问题的答案那样有效。

如果没有对架构进行任何精确定义,那么编写适合您问题的实际查询会有点困难。