mysql多表查询1 --- 中间表

一   这里采用join的方法进行多表查询


这里有4张表

1.student学生表

+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| s_id        | varchar(15) | NO   | PRI | NULL    |       |
| s_name      | varchar(15) | NO   |     | NULL    |       |
| s_password  | varchar(15) | NO   |     | NULL    |       |
| s_sex       | varchar(4)  | NO   |     | NULL    |       |
| s_age       | int(11)     | NO   |     | NULL    |       |
| s_term      | varchar(15) | NO   | MUL | NULL    |       |
+-------------+-------------+------+-----+---------+-------+

(1)其中s_term是学期 --- 外键


2.grade成绩表

+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| g_id    | varchar(20) | NO   | PRI | NULL    |       |
| midterm | int(11)     | YES  |     | NULL    |       |
| endterm | int(11)     | YES  |     | NULL    |       |
| makeup  | int(11)     | YES  |     | NULL    |       |
| rank    | varchar(4)  | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+


3.中间表

+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| study_id   | varchar(15) | NO   | PRI | NULL    |       |
| subject_id | varchar(15) | NO   | MUL | NULL    |       |
| s_id       | varchar(15) | NO   | MUL | NULL    |       |
| g_id       | varchar(15) | YES  | MUL | NULL    |       |
+------------+-------------+------+-----+---------+-------+

(1)s_id是学生表中的主键,g_id是成绩表中的主键,


4.学期表

+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| term_id   | varchar(15) | NO   | PRI | NULL    |       |
| term_name | varchar(15) | NO   |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+


现在我需要合并的表中的字段有学生表中的学生id,成绩表中的所有字段,这样mysql语句可以这样写:

select distinct student.s_id, grade.* from
study
join student on (student.s_id = study.s_id)
join grade on (grade.g_id = study.g_id)
where student.s_id = '1001';

其中学号是已知的,distinct --- 去掉重复记录,执行这条语句会弹出一个合并之后的表


发布了33 篇原创文章 · 获赞 7 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章