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 --- 去掉重复记录,执行这条语句会弹出一个合并之后的表


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值