三表查询,已知学生表,课程表,选修表。查询所有需要补考的名单,显示学号,姓名,课表编号,课程名称,成绩
时间: 2024-05-20 22:16:34 浏览: 211
SELECT
s.id AS 学号,
s.name AS 姓名,
c.id AS 课表编号,
c.name AS 课程名称,
e.score AS 成绩
FROM
student s
JOIN elect e ON s.id = e.student_id
JOIN course c ON e.course_id = c.id
WHERE
e.score < 60;
相关问题
用sql语言创建学生表 课程表 学生选修表
好的,以下是创建这三个表的 SQL 语句:
1. 学生表
```
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(50),
gender VARCHAR(10),
birthday DATE,
address VARCHAR(100)
);
```
2. 课程表
```
CREATE TABLE course (
id INT PRIMARY KEY,
name VARCHAR(50),
teacher VARCHAR(50),
credit INT,
time VARCHAR(50),
classroom VARCHAR(50)
);
```
3. 学生选修表
```
CREATE TABLE select_course (
id INT PRIMARY KEY,
student_id INT,
course_id INT,
score INT,
FOREIGN KEY (student_id) REFERENCES student(id),
FOREIGN KEY (course_id) REFERENCES course(id)
);
```
这三个表中,学生表包含学生的基本信息,课程表包含课程的基本信息,学生选修表则记录了学生选修了哪些课程以及成绩等信息。其中,学生选修表中的 student_id 和 course_id 分别是学生表和课程表中的主键,用于建立表与表之间的关联。
sql中查询选过课的学生学号且选修表没有学生学号的代码
可以使用如下的 SQL 语句查询选过课的学生学号且选修表没有学生学号的代码:
```
SELECT DISTINCT cs.student_id
FROM course_selection cs
WHERE NOT EXISTS (
SELECT 1 FROM course_registration cr WHERE cr.student_id = cs.student_id
);
```
其中,`course_selection` 是选课记录表,`course_registration` 是选修表,`student_id` 是学生学号字段。
上述 SQL 语句中,通过子查询 `NOT EXISTS` 来判断某个学生是否在选修表中出现。如果不存在,则说明该学生选过课但是没有在选修表中注册,符合查询条件。最终查询结果中每个学生只出现一次,可以使用 `DISTINCT` 关键字去重。
阅读全文