【发布时间】:2017-03-16 17:16:10
【问题描述】:
我在一个使用 PHP 和 MySQL 的模块项目中有一个考勤系统,MySQL 表如下所示:
现在,时间表用于存储一天中某个部分的课程时间表以及分配给它的老师。 student_info 表包含有关学生及其所属部门的一般信息。 考勤表用于记录缺勤,使用时间和学生证作为主键。
我可以计算一个学期有多少课,如下所示:
SELECT count(*) as total FROM timetable WHERE flag > ? AND semester = ? AND section = ? AND timeid BETWEEN ? AND ?
然后计算一个学生参加了多少次,并计算出勤率。
SELECT stu.* ,
(SELECT COUNT(*)
FROM attendancetable att
WHERE att.s_id = stu.class_roll
AND att.semester = ?
AND att.timeid BETWEEN ? AND ? ) AS absent
FROM student_info stu
WHERE stu.section = ?
AND stu.logYear = ?
AND stu.deleted = ?
ORDER BY stu.class_roll
现在,我还想显示一种考勤表,如下所示:
我尝试了 SQL Inner Join,但没有得到我想要的方式。
我在想第一行可以从以下查询中输出:
SELECT timeid
FROM timetable
WHERE flag > ?
AND semester = ?
AND section = ?
AND timeid BETWEEN ? AND ?
[UPDATE] 找到了一种方法,作为答案给出,不知道这是否是正确的方法。
提前感谢您的帮助。
【问题讨论】:
-
是我的问题太模糊还是发生了什么?我没有得到回应或帮助。还是我的初始表格做错了什么?我需要重新设置我的数据库吗?任何人都可以帮忙...
-
你找到解决办法了吗?我看起来完全一样....
-
@query 还没有。如果我找到了会更新。
-
@query 我确实找到了一些解决方案,请检查并提供 cmets。