(03)joins

2016-12-01  本文已影响0人  suhuanzhen

参考资料: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
上一篇下一篇

猜你喜欢

热点阅读