【问题标题】:join same table several times efficiently with Rails syntax使用 Rails 语法多次有效地连接同一个表
【发布时间】:2013-01-22 08:29:56
【问题描述】:

我的 Rails 2.3 应用程序中有一个复杂的数据库架构。在某些时候,我需要通过连接多个表来进行查询以从多个列中检索数据。有一个表我总是需要通过它来检索我需要的数据。

当我尝试使用 Rails 语法进行连接时,问题就来了。我发现没有办法让 rails 一次又一次地跳过加入同一张桌子。

假设我有这个表关系:

A=>B=>C=>D=>E=>F
A=>B=>F=>G
A=>B=>F=>H
A=>I

如您所见,B 是我“加入”多次以访问我需要的表的表。

我的查询如下所示:

A.all( :select=>"SOME DATA FROM F, G, H AND I",
       :joins=>[{{{{:B=>:C}=>:D}=>:E}=>:F}, {{:B=>:F}=>:G}, {{:B=>:F}=>:H}, :I],
       :conditions=>{"SOME CONDITIONS"
                    }
     )

您可以看到我使用哈希语法来指定连接。

问题是,当我查看 rails 创建的连接时,我发现它连接了 B 3 次。我希望它足够聪明,只做一次然后从那里开始,但我想可能会有你想加入几次的情况。

我的问题是,我怎样才能使用 rails 2.3.8 语法使生成的查询只加入 B 一次。在 :belongs_to :throug 类型的模型中添加额外的关系对我来说不是一个选项

【问题讨论】:

    标签: ruby-on-rails database join rails-activerecord


    【解决方案1】:

    试试

    A.all(:joins => [:I, { :B => [{ :F => [:G, :H] }, {:C => { :D => { :E => :F }}}]}])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多