2017-05-26 137 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); 

希望它有幫助。