查询所有学生的name、课程名 (course表中的name) 和degree

只有score表中关联学生的学号和课堂号,我们只要围绕着score这张表查询就好了。

SELECT * FROM score;+------+-------+--------+| s_no | c_no  | degree |+------+-------+--------+| 103  | 3-105 |     92 || 103  | 3-245 |     86 || 103  | 6-166 |     85 || 105  | 3-105 |     88 || 105  | 3-245 |     75 || 105  | 6-166 |     79 || 109  | 3-105 |     76 || 109  | 3-245 |     68 || 109  | 6-166 |     81 |+------+-------+--------+

只要把s_noc_no替换成studentsrouse表中对应的name字段值就好了。

首先把s_no替换成student表中的name字段:

SELECT name, c_no, degree FROM student, score WHERE student.no = score.s_no;+-----------+-------+--------+| name      | c_no  | degree |+-----------+-------+--------+| 王丽      | 3-105 |     92 || 王丽      | 3-245 |     86 || 王丽      | 6-166 |     85 || 王芳      | 3-105 |     88 || 王芳      | 3-245 |     75 || 王芳      | 6-166 |     79 || 赵铁柱    | 3-105 |     76 || 赵铁柱    | 3-245 |     68 || 赵铁柱    | 6-166 |     81 |+-----------+-------+--------+

再把c_no替换成course表中的name字段:

-- 课程表SELECT no, name FROM course;+-------+-----------------+| no    | name            |+-------+-----------------+| 3-105 | 计算机导论      || 3-245 | 操作系统        || 6-166 | 数字电路        || 9-888 | 高等数学        |+-------+-----------------+-- 由于字段名存在重复,使用 "表名.字段名 as 别名" 代替。SELECT student.name as s_name, course.name as c_name, degree FROM student, score, courseWHERE student.NO = score.s_noAND score.c_no = course.no;