(03)joins

参考资料:http://www.w3schools.com/sql/sql_join.asp

我们切换到新的分支进行开发

git checkout -b joins

为了方便,我们把前面模型关联起别名去掉


添加路由

left_join

错误示例
  • 动作代码:


  • 视图代码


  • 页面效果


  • 控制台信息


错误修改二

如下,两张表的主键都是id,不是ID这个先修改过来;原因的关键是我们把joins时候给posts表起别名p这部分去掉如下就可以了:


从控制台可以看出我们没有把关联的post记录取出来

正确示例

1、joins得到的结果是一个新的结果集,不是users表也不是posts表,而是select得到的所有字段组成的一个新结果集合,所以我们试图在html中通过user去访问关联的posts会出错Unknown column posts.title这样的错误。
2、我们joins语句里面给posts表起别名p报错这是因为,我们在后面的select和where语句里面还是使用posts而不是p这个别名,所以去掉别名就正确了。在joins里面使用别名要注意:所以使用到表名的地方,有别名就只能使用别名,不能再使用原来的名字了。

  • 如下就是正确的示例:
    如上,我们就把所有的用户取出来
    我们先添加一条没有微博的用户记录如下:


如上,我们left join使用了别名。left join就是把左边所有的用户都取出来,不管他有没有微博,然后右边则是只取出用户对应的微博,没有就不取出来。所以我们页面上得到4个用户,而张三有3条微博,赵六没有微博。所以结果上所有用户都有,但是id为5的微博没有显示。

使用where关键字过滤结果
是对新的结果集进行过滤,上面我们得到六条结果,然后对结果过滤后只剩下4条结果(不再取出所有用户,得到的结果是取出所有用户,但是使用where过滤后就不是原来那样子了)


提交到git仓库

进入项目根目录

.../active_record_second#  git add .
git commit -m "left_join"
git push -u https://github.com/xiaohuacc/active_record_second.git  joins

合并到主分支

git checkout master
git merge joins
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容