(03)joins

作者: suhuanzhen | 来源:发表于2016-12-01 11:24 被阅读0次

    参考资料: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
    

    相关文章

      网友评论

          本文标题:(03)joins

          本文链接:https://www.haomeiwen.com/subject/lqdxmttx.html