报错1146意味着你在MySQL中尝试访问一个不存在的表,即`school_db.attendance_records`。根据之前的数据库结构描述,确实没有提到`attendance_records`这个表。如果你想要追踪学生出勤情况,按照之前提供的信息,这应该是在`classes`表中关联到`students`表的记录。然而,如果你想有一个专门的出勤记录表,那么你可能需要先创建这样一个表,例如添加字段如`class_id`, `student_id`, `attendance_date`, 和 `status` 等来记录每次的出勤情况。
以下是创建`attendance_records`表的一个示例:
```sql
CREATE TABLE attendance_records (
record_id INT AUTO_INCREMENT PRIMARY KEY,
class_id INT,
student_id INT,
attendance_date DATE,
is_present BOOLEAN DEFAULT 1, -- 1 表示出席,0表示缺席
FOREIGN KEY (class_id) REFERENCES classes(class_id),
FOREIGN KEY (student_id) REFERENCES students(student_id)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
```
一旦有了这个表,你可以通过这个新表来统计出勤率或者其他出勤相关的指标。如果你现在想查看某个老师的所有课程及其学生的出勤情况,可以做跨表连接查询:
```sql
SELECT c.course_id, c.course_name, s.student_name, COUNT(ar.is_present) AS attendance_count
FROM courses c
JOIN classes cl ON c.course_id = cl.course_id
JOIN students s ON cl.student_id = s.student_id
LEFT JOIN attendance_records ar ON cl.class_id = ar.class_id AND s.student_id = ar.student_id
WHERE c.teacher_id = <your_teacher_id>
GROUP BY c.course_id, c.course_name, s.student_name;
```
这里 `<your_teacher_id>` 需替换为你关注的具体教师ID。