2015-09-17 35 views
0

我正在爲我的學校設計一個程序來保留學生出勤記錄。到目前爲止,我有以下查詢工作正常,現在我想添加一個IF語句來執行一個百分比操作時,給出了一定的條件。正因爲如此,該查詢使用INNER JOIN搜索來自兩個不同的表(oxadmain和stuattend)數據和它的顯示結果以及對結果表:嵌套計數()函數與百分比操作

SELECT o.name 
    , o.year 
    , o.photoID 
    , o.thumbs 
    , s.ID 
    , s.studid 
    , s.date 
    , s.teacher 
    , s.subject 
    , s.attendance  
    FROM stuattend s 
    JOIN oxadmain o 
    ON s.studid = o.stuid 
ORDER 
    BY name ASC 

現在我想以一個「如果」加陳述
1)當stuattend.attendance =缺席時計算出在任何給定時間段內學生缺勤的百分比,然後將該(%)值存儲在「百分比」中並且2)ELSE分配「百分比」的值爲100%。

到目前爲止,我一直在嘗試用下面的:

<?php $_GET['studentID'] = $_row_RepeatedRS['WADAstuattend']; ?> 

SELECT oxadmain.name , oxadmain.year , oxadmain.photoID , oxadmain.thumbs , stuattend.ID , stuattend.studid , stuattend.date , stuattend.teacher, stuattend.subject , stuattend.attendance 
CASE 
WHEN stuattend.attendance = Absent THEN SELECT Count (studentID) AS ClassDays, (SELECT Count(*) FROM stuattend WHERE studentID = stuattend.studid AND Absent = 1) AS ClassAbsent, ROUND ((ClassAbsent/ClassDays)*100, 2) AS Percentage 
ELSE 
Percentage = 100 
END 
FROM stuattend INNER JOIN oxadmain ON stuattend.studid=oxadmain.stuid 
ORDER BY name ASC 

就如何做好這一點有什麼建議?

感謝您的關注

+0

你在做什麼設置'$ _GET'元素的值?這是錯誤的。而且,該代碼行與選擇查詢有什麼關聯 - 您在查詢中根本沒有使用任何PHP變量。 – Simba

+0

Simba:你說得對。 $ _GET元素在那裏沒有用處。關於如何使用正確的count()函數來查找每個學生的總課堂日和總休息日的任何建議? (特別是缺席的日子),以便以後我可以得到學生在任何特定時間點缺勤的比例?感謝您的關注。 – Salaroche

回答

0

基地的想法是:

select stuattend.studid, sum(stuattend.attendance = `absent`)/count(*) 
from stuattend 
group by stuaddend.studid; 

這在很大程度上取決於每個學生,每天只有一個入口,當然得0,如果沒有缺席和1如果總是缺席。

爲了讓這個更穩定一點,我建議寫一個日曆日表,如果這是一個上學日,它只是保留所有日子和列的列表,所以workday = 1意味着他們應該去過那裏, workday = 0表示週日或假期。然後,您可以將該表從表中退出到在場和缺席日,甚至在您的表中不包含狀態時也可以給出良好的結果。

問問你是否決定走哪條路。