SQL Server查询每门课的先修课,显示:课程号、课程名称和先修课名称。
时间: 2023-06-27 16:05:12 浏览: 321
假设有以下两张表:
**course**
| 课程号 | 课程名称 |
| ------ | -------- |
| C001 | 语文 |
| C002 | 数学 |
| C003 | 英语 |
**prerequisite**
| 课程号 | 先修课程号 |
| ------ | ---------- |
| C002 | C001 |
| C003 | C002 |
则可以使用以下 SQL 查询来获取每门课的先修课:
```sql
SELECT
c.课程号,
c.课程名称,
p.先修课程号 AS 先修课名称
FROM
course c
LEFT JOIN prerequisite p ON c.课程号 = p.课程号
```
这里使用了左连接(LEFT JOIN),保证即使某些课程没有先修课,也能够显示出来。结果如下:
| 课程号 | 课程名称 | 先修课名称 |
| ------ | -------- | ---------- |
| C001 | 语文 | NULL |
| C002 | 数学 | C001 |
| C003 | 英语 | C002 |
相关问题
SQL Server查询各专业、各门课的平均成绩。显示:专业、课程名、平均成绩。
你可以使用以下的SQL查询语句来实现你的需求:
```
SELECT major, course_name, AVG(score) as avg_score
FROM scores
GROUP BY major, course_name
```
其中,假设你的成绩表名为 `scores`,包含字段 `major`(专业)、`course_name`(课程名)和 `score`(成绩),上述 SQL 查询语句会根据专业和课程名进行分组,并计算每组的平均成绩。最后的结果集将包含三个字段:专业、课程名和平均成绩。
sql server查询每门课程的课程号、任课教师姓名及其选课人数
你需要执行以下 SQL 查询语句来实现这个需求:
```
SELECT c.课程号, t.姓名, COUNT(*) AS 选课人数
FROM 课程表 c
INNER JOIN 教师表 t ON c.任课教师编号 = t.教师编号
INNER JOIN 选课表 s ON c.课程号 = s.课程号
GROUP BY c.课程号, t.姓名
```
这个查询语句会把课程表、教师表和选课表进行联结,然后计算每门课程的选课人数并且显示对应的课程号和任课教师的姓名。