php选择在同一查询中使用AVG COUNT和列名

时间:2016-10-17 21:34:52

标签: php function select

我对这个问题有两个部分:

这是我的代码:

$sql = "SELECT * FROM student_unique WHERE grade_level >='10' ORDER BY grade_level, last_name";
$result = $conn->query($sql);

if ($result->num_rows > 0) {

// output data of each row
while($row = $result->fetch_assoc()) {
   $temp = $row['student_number'];

    echo "<tr><td>";
    echo $row['first_name']." ".$row['last_name'];
    echo "</td>";

    $sql2 = "SELECT AVG(percent) AS number, COUNT(course_name) AS total FROM students_marks WHERE student_number='$temp'";
        $result2 = $conn->query($sql2);

        if ($result2->num_rows > 0) {
           echo "<td>";
            // output data of each row
            while($row2 = $result2->fetch_assoc()) {

                echo $row2['number']. " ". $row2['total'];


            }
          echo "</td>";
        } else {
            echo "<td> No Marks </td>";
        }


     // end of while loop    
    }

} else {
    echo "0 results";
}
$conn->close();

您可以看到打印平均值和学生所使用的课程数量。当我将$ sql2 SELECT更改为:

$sql2 = "SELECT AVG(percent) AS number, COUNT(course_name) AS total, course_name FROM students_marks WHERE student_number='$temp'";
    $result2 = $conn->query($sql2);

查询失败,我得到了#34;没有标记&#34;。

我确信我已经看到一些类似于此的查询,但我不确定为什么在select函数中添加另一列不会导致显示任何行。

第二个问题涉及在SELECT的末尾添加一个修饰符:

如果我向此添加WHERE子句,它也会返回&#34;没有标记&#34;。

 $sql2 = "SELECT AVG(percent) AS number, COUNT(course_name) AS total FROM students_marks WHERE student_number='$temp' AND total>'7'";

为什么在添加列名的情况下或者我添加涉及总数的WHERE子句时这不起作用?

如果有人能解释为什么&#34;我会非常感激。在这之后,我已经查看了过去几天对代码背后可能发生的事情的解释。

我将包括我正在使用的表格,它们可能是问题的一部分。

表格:

table: students_marks
id  stud_id gr  student_#   year   course  term  mark per

415 31703   9   3100992316  2500    PHYE9   F1  78  78
416 31703   9   3100992316  2500    FR9     F1  50  50
417 31703   9   3100992316  2500    ENG9    F1  55  55 

student_unique
id   student_#   First   Last   gr 
50  3100992316  Amanda  B       9

感谢您的支持

0 个答案:

没有答案