参考资料:http://www.w3schools.com/sql/sql_join.asp
参考资料:http://www.powerxing.com/sql-join/
我们切换到新的分支进行开发
git checkout -b joins-1th
数据表界面
![](https://img.haomeiwen.com/i3321198/5a99403d9c25b3ae.png)
![](https://img.haomeiwen.com/i3321198/379f16005ffc705d.png)
right_join
![](https://img.haomeiwen.com/i3321198/089a715eaed2a499.png)
![](https://img.haomeiwen.com/i3321198/0d025c54fa9aea51.png)
![](https://img.haomeiwen.com/i3321198/6295fbe89293a463.png)
使用right_join的话,我们可以看到把右边所有6条微博都取出来了。而用户则是取出微博对应的用户,所以赵六没有在结果页面。
用户right join微博,等价于微博left join用户,都是一样的,如下结果跟上例保持一致
![](https://img.haomeiwen.com/i3321198/b65ce7a7e21ac033.png)
![](https://img.haomeiwen.com/i3321198/abcf7de8894905d1.png)
outer join
- 其实我们用过很多次了,只不过outer关键字在一般情况下都可以忽略不写,left join就是left outer join,right join 就是right outer join
![](https://img.haomeiwen.com/i3321198/9752c121ea010a14.png)
![](https://img.haomeiwen.com/i3321198/827cfb1e59c509c6.png)
![](https://img.haomeiwen.com/i3321198/7c1ff780ede2cb9a.png)
如上,我们可以看到left_outer_join和right_outer_join与原来不写出outer的结果是一样的;outer关键字可写可不写。
full join与full outer join
![](https://img.haomeiwen.com/i3321198/884c8b827fd60bbb.png)
![](https://img.haomeiwen.com/i3321198/52f6750acaa273ae.png)
rails还没见过需要full join的场景,这个以后碰到了再写
join
使用join的话,则是用户和微博有对应关系才放入结果集合。所以赵六没有对应的微博就没有出现在结果集合,id为5的微博没有对应的用户也没有出现在结果集。
![](https://img.haomeiwen.com/i3321198/f89fa468dff35a3a.png)
![](https://img.haomeiwen.com/i3321198/f1d39aa17168810f.png)
因为join的原理是存在对应关系的才显示在结果集合中,所以用户去joins微博跟微博去joins用户都是一样的。
inner join
inner join的inner关键字在一般情况下是可以忽略的,所以inner join就是join,如下结果跟join的结果也是一样的
![](https://img.haomeiwen.com/i3321198/a57edbcfe0d6d882.png)
![](https://img.haomeiwen.com/i3321198/f2e5d439e4916e24.png)
提交到git仓库
进入项目根目录
.../active_record_second# git add .
git commit -m "joins-1th"
git push -u https://github.com/xiaohuacc/active_record_second.git joins-1th
合并到主分支
git checkout master
git merge joins-1th
网友评论