多表关联分析

 引子:A left join B选取所有满足关联条件的数据,还会列举出A表中的剩余数据,但是select出来的B表部分会以null来填充

 

 

现在有4张表:

  1. 班级表A[ID,NAME(班级名称)]
  2. 学生表B[ID,NAME(姓名),CLASSID(哪个班的)]
  3. 学生选课表C[ID,STUDENTID(学生ID),COURSEID(课程ID)]
  4. 课程表D[ID,NAME(课程名称),WLK(文科还是理科)]

有一需求要查询某班级所有学生选修课中选修理科的情况,4张表需要关联,查询条件理由班级名称、课程类型也就是

 

 

考虑到有些学生是不选课的,所以B、C应该是左关联,A、B内连接,C、D也是内关联。

 

得到语句为:

 

 

运行后就会发现没有选修课的学生是选不出来的,主要原因分析如下:

 

  1. A、B内连接后该有的数据都有了
  2. 和C关联后不满足关联条件取出的数据中C表的部分为空,这时如果还用内连接和D关联的话,那么就会丢失部分数据,所以使用右关联和D关联
  3. 和D关联后,步骤2中取出为空字段不满足关联条件,那么选出的D表部分也就为空,所以加上D表的查询条件D.WLK = '理'就不能选出应该被选出的字段为空的数据

所以最后可以得出以下的查询语句:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值