MySQL(6)多表查询

join on

#一对多:一个表里的一行关联,对应另一个表的多行关联。在表中通过外键实现。即一个表的主键,是另一个表的外键
create table salesman(
id int(10),
name varchar(20)
);
create table performerce(
#commment ‘’  ,添加注解
pid int(10) comment '销售记录id',
id int(10)  comment '销售员id',
gid int(10) comment '商品id',
good varchar(20),
#decimal 六位数,保留两位小数
bonus decimal(6,2) comment '奖金'
);

#查询,将两表的内容合为一表的内容:
select s.id,pid,bonus from salesman s join performerce p on p.id=s.id;
 这里在表名后面添加的字符是起的别名,只在这个查询的过程中起作用,方便后面的进行比较。
 这里的条件是两个id相同。
 这两个id其实都是销售员的id,所以可以相同,能满足这个条件。
 当然,我没有插入数据,意思就是这么个意思..

#多对多的关系 A表的一行对应B表的多行,B表的一行也对应A表的多行
#这需要三个表来实现,首先两个表是可以不存在关系,第三张表将第一二张表联系起来
#在上表的基础上创建一个商品表
create table goods(
id int(10) comment '商品id',
good varchar(20) comment '商品名',
);

#查询商品id为1的商品被哪些销售员卖掉,以及奖金各是多少
select g.id,s.id,bonus from performerce p 
join goods g on g.id=p.gid 
join salesman s on p.id=s.id 
where g.id=1;
#关键在于将数据表联系起来,存在关系的表一定要先写,然后找出对应的A表和B表的关系,A表和C表的关系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值