Есть две таблицы, одна - таблица ответов, а другая - таблица StudentAnswer. Есть 6 полей, которые меня интересуют, 4 в таблице ответов и 2 из таблицы StudentAnswer. Ниже приведены таблицы, их поля и данные.
Answer Table:
QuestionId AnswerId AnswerContent AnswerCorrect
1 1 Leeds 1 (true)
2 2 Manchester 0 (false)
3 3 Birmingham 0 (false)
StudentAnswer Table:
StudentAnswer QuestionId
2 1
3 1
1 1
(Поле StudentAnswer содержит AnswerId, это ответы учеников в зависимости от того, какой ответ они выбрали для какого вопроса)
Теперь эти поля и другие поля хранятся в массиве, который отображается в таблице. Код PHP для этого ниже:
<table border='1'>
<tr>
<th>Session ID</th>
<th>Question Number</th>
<th>AnswerContent</th>
<th>StudentAnswer</th>
<th>Student ID</th>
</tr>
<?php
while ($row = mysql_fetch_array($result)) {
echo "
<tr>
<td>{$row['SessionId']}</td>
<td>{$row['QuestionNo']}</td>
<td>{$row['AnswerContent']}</td>
<td>{$row['StudentAnswer']} </td>
<td>{$row['StudentId']}</td>
</tr>";
}
?>
Ниже показано, что он выводит в данный момент из запроса и массива:
Session ID Question Number Answerid AnswerContent StudentAnswer Student ID
ABB 1 1 Leeds 1 u0867587
ABB 1 1 Leeds 3 u1231231
Строка 1 показывает, что ученик u0867587 положил для своего ответа на вопрос 1. Правильный ответ - Лидс, и, поскольку он выбрал ответ «1», то есть Лидс, его ответ учащегося - Лидс, но, очевидно, поскольку StudentAnswer - это поле int, которое он отображает это как «1». Строка 2 показывает, что студент u1231231 ответил на тот же вопрос, очевидно, правильный ответ по-прежнему Лидс, но он выбрал Бирмингем, который отвечает «3», поэтому его ответ - «Бирмингем», но, поскольку StudentAnswer является полем int, он отображает его как «3». в поле AnswerId, чтобы оно отвечало на слова answerId
Вот что я действительно хочу вывести:
Session ID Question Number AnswerId AnswerContent StudentAnswer Student ID
ABB 1 1 Leeds Leeds u0867587
ABB 1 1 Leeds Birmingham u1231231
Выводит то же, что и выше, но вместо того, чтобы отображать его как int из поля StudentAnswer, он отображает его как слово answer с использованием AnswerContent. Поэтому AnswerContent автоматически связывается с Answerid, но я также хочу связать его с StudentAnswer.
Поле StudentAnswer совпадает с полем AnswerId, поскольку оно извлекает идентификатор ответа в зависимости от того, что студент выбрал для своего ответа.
Я попробовал $row['StudentAnswerContent'] == $row['StudentAnswer'] = $row['AnswerContent'];
, но это не сработало. Как я могу отобразить answercontent для каждого StudentAnswer?
Ниже приведен запрос:
SELECT
SessionId,
q.QuestionNumber,
a.AnswerContent,
a2.AnswerContent as StudentAnswerContent,
StudentId
FROM Question q
INNER JOIN StudentAnswer sa ON q.QuestionId = sa.QuestionId
JOIN Answer a ON sa.QuestionId = a.QuestionId
JOIN Answer a2 ON sa.StudentAnswer = a2.AnswerId
WHERE
(CorrectAnswer = '1')
ORDER BY $orderfield ASC";
Как вывести его как массив $ row ['...'] в массиве?