【发布时间】:2017-07-03 07:51:09
【问题描述】:
我在从 HTML TABLE 形式的结果表中获取数据时遇到问题。我有一个表结果,其中包含有关学生成绩的信息,其中标记列具有多个值,例如 SA1、SA2、SA3、Mid_term、Final。
所以在这个查询中,我从results table 获取first_name 和marks。
问题是我在SA1 column 下获得了所有分数,但我希望在SA1 Column SA2 marks 下SA2 Column SA3 marks 在SA3 Column 下获得SA1 marks。
我几乎尝试了所有方法,但我无法弄清楚我在做什么。
这是我的代码
echo '<table class = "w3-table">
<tr>
<td> Name </td>
<td> SA1 </td>
<td> SA2 </td>
<td> SA3 </td>
<td> Mid-term </td>
<td> Final </td>
</tr>
<tr>
';
$q = "(SELECT first_name, marks FROM results WHERE class = '11th Arts' AND
subject = 'Arts' AND exam_type = 'SA1' )
UNION ALL (SELECT NULL, marks as m1
FROM results WHERE class = '11th Arts' AND subject = 'Arts'
AND exam_type = 'SA2' )
UNION ALL (SELECT NULL, marks as m2 FROM results
WHERE class = '11th Arts' AND subject = 'Arts' AND exam_type = 'SA3' )
UNION ALL (SELECT NULL, marks as m3 FROM results
WHERE class = '11th Arts' AND subject = 'Arts' AND exam_type = 'Mid-term')
UNION ALL (SELECT NULL, marks as m4 FROM results
WHERE class = '11th Arts' AND subject = 'Arts' AND exam_type = 'Final')";
$r = mysqli_query($dbc, $q)
or die(mysqli_error($dbc));
while($row = mysqli_fetch_assoc($r))
{
$name = $row['first_name'];
$marks = $row['marks'];
$marks1 = $row['m1'];
$marks2 = $row['m2'];
$marks3 = $row['m3'];
$marks4 = $row['m4'];
echo '<tr>
<td>' .$name .'</td>
<td>'. $marks. '</td>
<td>'. $marks1. '</td>
<td>'. $marks2. '</td>
<td>'. $marks3. '</td>
<td>'. $marks4. '</td>
</tr>';
}
echo '</table>';
?>
【问题讨论】:
-
请给出你的表结构
-
您正在尝试做的事情称为枢轴,而不是联合。看看例如MySQL pivot table
-
id、username、first_name、last_name、exam_type、subject、date、marks、total_marks、class 这些是列
标签: php mysql while-loop union