查询每门课程及其被选情况,输出课程中每门课的课程号,课程名,选修该课程的学号及成绩,如果没有学生成绩,则该相应的学生学号以及成绩为空值
时间: 2024-11-09 22:24:22 浏览: 46
要查询每门课程及其被选情况,并输出课程号、课程名、选修的学生学号和成绩,同时处理没有成绩的情况,你可以设计一个SQL查询,结合学生的选课表(例如`courses_taken`)和课程成绩表(例如`course_scores`)。以下是基本的查询结构:
```sql
SELECT
c.course_id AS '课程号',
c.course_name AS '课程名',
st.student_id AS '选修学生学号',
COALESCE(sc.score, '空值') AS '成绩'
FROM
courses c
LEFT JOIN
(courses_taken ct JOIN students s ON ct.student_id = s.student_id) ON c.course_id = ct.course_id
LEFT JOIN
course_scores sc ON ct.course_id = sc.course_id AND sc.student_id = s.student_id
```
这个查询做了以下几件事:
1. 使用`LEFT JOIN`连接了`courses`表和`courses_taken`表,确保每门课程都会出现在结果中,即便它没有被选修。
2. 再次通过`LEFT JOIN`将`courses_taken`表与`students`表连接,以便获取学生的信息。
3. 最后,通过`LEFT JOIN`连接`course_scores`表,只有当有对应的成绩时才会返回,如果无成绩则会显示`NULL`。这里使用`COALESCE`函数将`NULL`替换为“空值”。
阅读全文