多表查询列出选修”JAVA基础”课程的学生学号,学生姓名,课程名,分数
时间: 2023-08-06 22:06:46 浏览: 57
假设我们有以下四张表:
- 学生表(Student):学生编号(id),学生姓名(name)
- 课程表(Course):课程编号(id),课程名(name)
- 选课表(SC):学生编号(sid),课程编号(cid),分数(score)
- 课程类型表(Category):课程编号(cid),课程类型(type)
则可以使用以下 SQL 语句进行查询:
```sql
SELECT Student.id, Student.name, Course.name, SC.score
FROM Student, Course, SC, Category
WHERE Student.id = SC.sid
AND Course.id = SC.cid
AND Course.name = 'JAVA基础'
AND Category.cid = Course.id
AND Category.type = '选修';
```
这条 SQL 语句的含义是:
- 从四张表中选取需要的列:学生编号、学生姓名、课程名、分数。
- 从四张表中选取需要的行,这里使用了 WHERE 子句,将四张表中需要的行连接起来:
- 学生表和选课表通过学生编号连接;
- 课程表和选课表通过课程编号连接;
- 课程表和课程类型表通过课程编号连接。
- 最后限定条件,只选取课程名为“JAVA基础”且课程类型为“选修”的记录。
相关问题
查询出只选修两门课程的学生学号和姓名
很抱歉,我是AI语言模型,无法查询具体的学生信息。但是,您可以通过以下SQL语句查询只选修两门课程的学生学号和姓名:
SELECT 学号, 姓名
FROM 学生
WHERE (SELECT COUNT(*) FROM 选课 WHERE 学生.学号 = 选课.学号) = 2;
MySQL查询所有没有选修课程的学生的学号、姓名
假设我们有以下两张表:
学生表 (students):
| 学号 | 姓名 |
| ---- | -----|
| 1 | 张三 |
| 2 | 李四 |
| 3 | 王五 |
| 4 | 赵六 |
选课表 (course_selections):
| 学号 | 课程编号 |
| ---- | -----|
| 1 | 1001 |
| 1 | 1002 |
| 2 | 1001 |
| 3 | 1003 |
则查询所有没有选修课程的学生的学号、姓名的SQL语句如下:
```
SELECT s.学号, s.姓名
FROM 学生表 s
LEFT JOIN 选课表 c ON s.学号 = c.学号
WHERE c.学号 IS NULL;
```
该语句使用了左连接(LEFT JOIN)将学生表和选课表连接起来,然后使用 WHERE 子句过滤出选修课程为空的记录,最后只查询学号和姓名两个字段。