您的位置:首页 > 数据库 > MySQL

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

2016-05-28 18:49 459 查看
一   这里采用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 --- 去掉重复记录,执行这条语句会弹出一个合并之后的表
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: