为什么要自已和自己内连接呢?

为什么要自已和自己内连接呢?

SELECT DISTINCT(b.goods_id) FROM `ecs30`.`ecs_goods_attr` AS a, `ecs30`.`ecs_goods_attr` AS b WHERE b.attr_value = a.attr_value AND b.attr_id = 172 AND a.goods_attr_id = 233

http://img1.sycdn.imooc.com/climg//592a2a11000135ff07380109.jpg

这一个SQL语句为什么要自己内连接自己的呢?不明白具体的作用是什么

正在回答 回答被采纳积分+1

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

5回答
慕娟829776 2017-05-31 12:03:32

可以,直接查询自己的表就行


没有马甲线的安琪拉 2017-05-30 10:12:41

你可以自己试一下,如果使用单表查询,按这个查询结果,这个查询条件该怎么写。

这里如果不用自连接无法实现对同一个表中同按条件数据的筛选。

  • 提问者 慕设计3711538 #1
    SELECT * FROM `ecs30`.`ecs_goods_attr` WHERE attr_id = 172 AND goods_attr_id = 233 我用这一条语句可以查出来啊,和上面的的效果一样的
    2017-05-30 17:15:14
木荀 2017-05-30 09:46:03

感觉ecshop里面有很多这样的情况,好多都是旧版本继承下来习惯性写法,要我说太细节的东西不要抠了,整明白主要逻辑就得

木荀 2017-05-30 09:39:17

这里面就查了个goods_id字段,所习以这里通过goods_id去重进行联表自查应该也是ecshop的系统程序编写的习惯性写法,没有具体作用。如果它同时还要查别的字段的话,那这种去重联表查询应该比直接查询自己的表效率快

提问者 慕设计3711538 2017-05-28 09:43:43

直接查询自己的表不就行了吗?

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
ECShop3从基本使用到二次开发
  • 参与学习       387    人
  • 提交作业       102    份
  • 解答问题       238    个

从基本使用到独立模块定制开发,深入解析ECShop源码,了解PHP编程思想,一步步打造属于你的大型网上商城!

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

在线咨询

领取优惠

免费试听

领取大纲

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