老师,单独表查询,在合并结果怎么理解啊

老师,单独表查询,在合并结果怎么理解啊

老师,单独表查询,在合并结果怎么理解啊,课程中的三表联查,需求是:查询商品表的id,和商品名,以及商品分类名,管理员名这样的需求,用单独查询这三张表方式,怎么处理?才能得到联表查询得到的效果呢

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好, 刚是老师的失误,缺少了一点内容,

  1. 关于合并数据,同学也可以使用联合查询union all关键字关联三张数据库表。如下所示:

select * from a
union all
select * from b
union all
select * from c;

不过有几条注意事项,如下所示:

  • union:联合的意思,即把两次或多次查询结果合并起来。

  • 要求:两次查询的列数必须一致

  • 列的类型可以不一样,但推荐查询的每一列,想对应的类型以一样

  • 可以来自多张表的数据:多次sql语句取出的列名可以不一致,此时以第一个sql语句的列名为准。

  • 如果不同的语句中取出的行,有完全相同(这里表示的是每个列的值都相同),那么union会将相同的行合并,最终只保留一行。也可以这样理解,union会去掉重复的行。

  • 如果不想去掉重复的行,可以使用union all。

  • 如果子句中有order by,limit,需用括号()包起来。推荐放到所有子句之后,即对最终合并的结果来排序或筛选。如:

(select * from a order by id) union (select * from b order id);

2. 课程中老师讲解是正确的, 多表联查的效率是没有单独表效率高。不过在结合使其语言时,会比较消耗内存。

3. 在后期使用框架时,会使用框架中的数据库关联,框架会进行处理提高效率,所以此时同学不需要深究。

祝学习愉快!

好帮手慕小尤 2020-08-06 13:43:45

同学你好,1. 同学想要使用三条单表查询并将结果结合在一起,可以借助其他语句,需要使用多层循环与if 判断,比较消耗内存。

2. 多表联查的效率是没有单独表效率高,不过多层循环与if 判断更消耗内存,所以不建议使用三条单表查询实现,同学使用三表联查进行实现即可。

祝学习愉快!

  • 提问者 慕九州8345213 #1
    那老师课程中提那一句目的是啥啊,有点迷糊了,多表联查的优化到底该怎么弄呢
    2020-08-06 14:05:57
好帮手慕小尤 2020-08-05 18:50:50

同学你好,同学是想通过三条单独表查询的结果拼接到一条语句中吗?如果是,则是无法实现的,建议同学使用联表查询进行实现。

如果不是,则建议同学重新反馈一下问题,便于老师定位问题。

注:表之间需要存在关联字段才可以实现关联查询。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 慕九州8345213 #1
    就是在5-4多表联查的操作这一课节中的14:40秒左右,老师有说:“在做优化做测试的时候,多表联查的效率没有从单独表中把它查出来再进行合并效率要高”,这句话的意思是不是建议在超过三张表以上的联查时,就要考虑使用单表查询,再合并结果,那这里就已老师课程中老师的例子联查商品表、分类表和管理员表的三标联查,如何实现优化,即单表查询再合并结果?还是说单表查询合并结果不能实现三表联查的效果?
    2020-08-06 11:16:27
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
PHP小白零基础入门
  • 参与学习           人
  • 提交作业       626    份
  • 解答问题       4930    个

想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师