T10:查询所有课程及其选课人数。(提示:没有被选的课程也需要被输出,需要外连接)
时间: 2023-06-16 20:07:35 浏览: 65
可以使用左外连接(LEFT JOIN)来查询所有课程及其选课人数(包括没有被选的课程)。假设有两个表:`course` 表存储所有课程的信息,包括课程编号(`course_id`)和课程名称(`course_name`);`enrollment` 表存储选课信息,包括学生编号(`student_id`)和课程编号(`course_id`)。
查询语句如下:
```
SELECT course.course_id, course.course_name, COUNT(enrollment.student_id) AS enrollment_count
FROM course
LEFT JOIN enrollment
ON course.course_id = enrollment.course_id
GROUP BY course.course_id, course.course_name;
```
这条语句会将 `course` 表和 `enrollment` 表按照课程编号进行左外连接。`COUNT(enrollment.student_id)` 会统计每门课程的选课人数,即使没有人选这门课程也会显示为 0。`GROUP BY` 子句会按照课程编号和课程名称进行分组,确保每门课程只会出现一次。
注意,如果有学生在 `enrollment` 表中选了重复的课程,这条语句会将他们视为一个人。如果需要统计每个学生的选课情况,可以在查询语句中加入 `enrollment.student_id` 并将 `GROUP BY` 子句修改为 `GROUP BY course.course_id, course.course_name, enrollment.student_id`。