【发布时间】:2015-11-06 09:06:02
【问题描述】:
我想计算每个学生的学生出勤率,它会显示属于每个学生的每个出勤率。以下是我的代码:
<tbody>
<?php
$data = "SELECT SUM(studAtt_endTime - studAtt_startTime) FROM studentAttendance";
$result = $conn->query($data)
or die ("Error: ".mysqli_error($conn)); //look if theres any error
while($ser2=mysqli_fetch_array($result)) {
?>
<?php
$counter = 1;
$data = "SELECT * FROM student INNER JOIN studentAttendance ON student.stud_matric=studentAttendance.student_stud_matric
INNER JOIN course ON course.course_code=studentAttendance.course_course_code
WHERE course_course_code LIKE '%$_GET[course]%'
GROUP BY student_stud_matric";
$result = $conn->query($data)
or die ("Error: ".mysqli_error($conn)); //look if theres any error
while($ser=mysqli_fetch_array($result)) {
?>
<tr>
<td><center><?php echo $counter;
$counter++; ?></center></td>
<td><?php echo $ser["stud_matric"];?></td>
<td><?php echo $ser["stud_name"];?></td>
<td><?php
$a = $ser["course_contacthour"];
$b = "14";
$tch = ($a * 2 ) * $b; // tch= total contact hour in 14 week
echo number_format($ser2["SUM(studAtt_endTime - studAtt_startTime)"] / $tch * 100, 2);?></td>
</tr>
<?php
}
?>
<?php
}
?>
</tbody>
问题是,这段代码会总结所有学生的出勤率,并且会为每个学生显示相同的百分比,而不是学生本身的百分比。
【问题讨论】:
-
您有一个使用
$result的嵌套 sl 查询 - 外部查询也使用它,这可能会导致问题。 -
还有其他问题。为什么要两个查询?您在第二个查询中错过了参数名称的引号(即:
'%$_GET[course]%'应该是'%{$_GET['course']}%',而number_format($ser2["SUM(studAtt_endTime - studAtt_startTime)"] / $tch * 100, 2)是什么?? -
我有两个查询,因为它不能仅由一个查询完成,或者我无法编写正确的查询。
number_format($ser2["SUM(studAtt_endTime - studAtt_startTime)"] / $tch * 100, 2)是学生出勤率的计算。因此,我需要第一个查询中的SUM(studAtt_endTime - studAtt_startTime)。但是,显示的结果是根据所有学生的总“SUM(studAtt_endTime - studAtt_startTime)”计算的,而不是针对我想要的每个特定学生。 @RamRaider