2017-05-26 131 views
-1

让我解释一下背景故事,老师可以设置一个学生在场或不在场。这些学生的价值被放在一个数据库中,这个查询选择了班级代码,并计算了某个课程中学生的比例,但是我不知道该怎么做,文件必须转换为JSON,放入一个ChartJS条形图,但由于某种原因,我似乎无法弄清楚这个代码,每个类的每个百分比都必须计算,所以我不能使用IN或类似的东西来计算整个课程的存在而不是每堂课的课程(这就是klas.code ='$ klas'的意思)是否有人知道我如何得到1的结果,但仍然能够分别计算每个班级的百分比?MySQL查询中的Foreach循环

谢谢。

$klassen = array("WFHBOICT.V1E", "WFHBOICT.V1F"); 
foreach($klassen as $klas){ 
//query to get data from the table 
$query = ("SELECT klas.code klas, ROUND(
(
    SELECT Count(aanwezigheid) 
    FROM aanwezigheid 
    JOIN college ON aanwezigheid.Ccode = college.code 
    JOIN klas ON college.Kcode = klas.code 
    WHERE klas.code = '".$klas."' AND vak.code = 'WFHBOICT.M032.16' AND college.college = '8' 
    AND aanwezigheid = '1' 
) 
/
(
    SELECT Count(aanwezigheid) 
    FROM aanwezigheid 
    JOIN college ON aanwezigheid.Ccode = college.code 
    JOIN klas ON college.Kcode = klas.code 
    WHERE klas.code = '".$klas."' AND vak.code = 'WFHBOICT.M032.16' AND college.college = '8' 
) 
* 100) 
    as percentage 
FROM aanwezigheid 
JOIN college ON aanwezigheid.Ccode = college.code 
JOIN klas ON college.Kcode = klas.code 
JOIN vak ON college.Vcode = vak.code 
WHERE klas.code = '".$klas."' AND vak.code = 'WFHBOICT.M032.16' AND college.college = '8' 
GROUP BY klas.code"); 

//execute query 
$result = $mysqli->query($query); 

//loop through the returned data 
$data = array(); 
foreach ($result as $row) { 
$data[] = $row; 
} 

print json_encode($data); 

这是结果:

[{"klas":"WFHBOICT.V1F","percentage":"67"}] 

它必须在短短1代替返回括号中这两个类...

+0

查看https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- SQL查询 – Strawberry

回答

1

的问题来自于第一foreach循环。在它之前初始化$ data数组,并在打印之前关闭第一个foreach。

$klassen = array("WFHBOICT.V1E", "WFHBOICT.V1F"); 

$data = array(); 
foreach($klassen as $klas){ 
    //query to get data from the table 
    $query = ("SELECT klas.code klas, ROUND(
    (
     SELECT Count(aanwezigheid) 
     FROM aanwezigheid 
     JOIN college ON aanwezigheid.Ccode = college.code 
     JOIN klas ON college.Kcode = klas.code 
     WHERE klas.code = '".$klas."' AND vak.code = 'WFHBOICT.M032.16' AND college.college = '8' 
     AND aanwezigheid = '1' 
    ) 
    /
    (
     SELECT Count(aanwezigheid) 
     FROM aanwezigheid 
     JOIN college ON aanwezigheid.Ccode = college.code 
     JOIN klas ON college.Kcode = klas.code 
     WHERE klas.code = '".$klas."' AND vak.code = 'WFHBOICT.M032.16' AND college.college = '8' 
    ) 
    * 100) 
     as percentage 
    FROM aanwezigheid 
    JOIN college ON aanwezigheid.Ccode = college.code 
    JOIN klas ON college.Kcode = klas.code 
    JOIN vak ON college.Vcode = vak.code 
    WHERE klas.code = '".$klas."' AND vak.code = 'WFHBOICT.M032.16' AND college.college = '8' 
    GROUP BY klas.code"); 

    //execute query 
    $result = $mysqli->query($query); 

    //loop through the returned data 

    foreach ($result as $row) { 
     $data[] = $row; 
    } 
} // end first foreach 
print json_encode($data); 

希望它有帮助。