SQL Server查询每门课的先修课,显示:课程号、课程名称和先修课名称。
时间: 2023-06-27 13:05:12 浏览: 715
假设有以下两张表:
**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查询每一门课的间接选修课(即选修课的选修课)
假设有一个名为Course的表格,其中包含以下列:
- id:课程ID
- name:课程名称
- prerequisite_id:先修课程ID
则可以使用以下SQL查询来获取每门课的间接选修课:
```
SELECT DISTINCT c2.name
FROM Course c1
JOIN Course c2 ON c1.prerequisite_id = c2.id
WHERE c1.prerequisite_id IS NOT NULL
```
该查询会将课程表格自我连接,查询出所有的间接选修课程。首先,查询会找到所有有先修课程的课程,然后将它们与其他课程进行连接,从而获得它们的间接选修课程。最后,使用DISTINCT关键字去重,以避免重复的课程名称。
阅读全文