mysql外联多表查询

🔑 外联查询,就是把两张表按照某个条件合并成一张新表

  • 比如说:学生数据,课程数据,班级数据,这些数据不可能全部写在同一张表里面,肯定是分成三张表,每张表只存对应的数据,当需要的时候,使用外联查询把这些数据串成一张某些字段我们需要的表

案例:
⭕️ 首先有下面三张表

  1. 学生表
    c_s_uuid:学生唯一标识
    c_s_name: 学生姓名
    c_s_class: 所学课程的uuid
    在这里插入图片描述
    2.课程表
    c_uuid: 课程唯一标识
    c_name: 课程名
    c_add: 上课地址唯一标识
    在这里插入图片描述
    3.上课地点表
    c_d_uuid: 上课地点唯一标识
    c_d_pos: 上课地点
    在这里插入图片描述

⭐️ 需求:获取学生,学生上课地址两个字段的一张表(或者视图),如下图:
在这里插入图片描述

  1. 步骤一:先把学生表和课程表进行外联组合

    SELECT
    	* 
    FROM
    	c_student AS a
    	LEFT JOIN c_leason AS b ON b.c_uuid = a.c_s_class
    

    得到表:
    在这里插入图片描述

  2. 步骤二:接下来用这张外联出来新表去外联上课地点表

    SELECT
    	* 
    FROM
    	c_student AS a
    	LEFT JOIN c_leason AS b ON b.c_uuid = a.c_s_class
    	LEFT JOIN c_address AS c ON c.c_d_uuid = b.c_add
    # 注意! 我们要外联的条件字段是从哪张表合并过来的,
    # 就去哪张表里取。虽然说外联之后得到了一张新的表,但是取新表的字段的时候,还是要从旧表里面找
    

    得到表:在这里插入图片描述

  3. 步骤三:从上面这张两次外联的表中得到字段数据,组成新的表(视图)

    # 取的规则也是和外联的规则一样,虽然外联之后合并成了新表,但拿字段的时候还是要从字段来的那张表拿
    
    SELECT
    	a.c_s_name, # 学生姓名的字段在a表上
    	c.c_d_pos	# 上课地点字段在c表上
    FROM
    	c_student AS a
    	LEFT JOIN c_leason AS b ON b.c_uuid = a.c_s_class
    	LEFT JOIN c_address AS c ON c.c_d_uuid = b.c_add
    

    最后的结果:
    在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值