首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用left join与Arel连接?

如何使用left join与Arel连接?
EN

Stack Overflow用户
提问于 2012-09-18 18:22:58
回答 2查看 7.8K关注 0票数 7

Arel 3.0.2提供了两个类来指定连接类型:Arel::Nodes::InnerJoinArel::Nodes::OuterJoin,并默认使用InnerJoin

代码语言:javascript
复制
foo = Arel::Table.new('foo')
bar = Arel::Table.new('bar')

foo.join(bar, Arel::Nodes::InnerJoin) # inner
foo.join(bar, Arel::Nodes::OuterJoin) # outer

foo.join(bar, ???) # left

如果想要生成左连接,如何连接两个表?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-20 21:53:58

您可以使用

代码语言:javascript
复制
foo.join(bar, Arel::Nodes::OuterJoin) # outer

因为LEFT JOIN = LEFT OUTER JOIN。Outer是一个选项。请参阅here

票数 13
EN

Stack Overflow用户

发布于 2014-04-23 14:16:22

这里有一个完整的rails模型示例,供任何想要了解的人使用。

我花了几个小时才弄明白,所以我想我应该和全世界分享

这里假设您有一个名为RssFeed的模型和另一个名为RssFeedUser的模型,这是一个名为User的模型的has_many :through连接模型

代码语言:javascript
复制
RssFeed.find_by_sql(
  RssFeed
    .arel_table
    .join(RssFeedUser.arel_table, Arel::Nodes::OuterJoin)
    .on(RssFeed.arel_table[:id].eq(RssFeedUser.arel_table[:rss_feed_id]))
    .where(RssFeedUser.arel_table[:user_id].eq(nil))
    .project('rss_feeds.*')
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12475058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档