2014-10-12 39 views
1

我定義我的Rails應用程序下面guideRails - 如何基於單個視圖加入兩個關係?

這樣一個觀點,現在我有這個類:

class GoldenResult < ActiveRecord::Base 
    scope :latest_builds, -> { select('MAX(id) as id').group(:platform_id, :release_id, :configuration_id) } 

end 

我想執行以下連接:

SELECT * FROM performance_dev.report_golden_results e 
join (SELECT max(id) as 'id' 
from performance_dev.report_golden_results 
group by platform_id, release_id, configuration_id) s 
ON s.id = e.id; 

問題是我不知道如何訪問連接變量(即ON s.id = e.id

什麼是創建此查詢的常規方式?

謝謝!

+0

SQL方式將使用** union **(或** intersect **?),我想。 Rails的ActiveRecord是建立在'arel'上的,所以這**可能會幫助,不確定:http://radar.oreilly.com/2014/05/more-than-enough-arel.html – 2014-10-13 13:27:12

回答

0

我結束了使用下面的查詢解決這一問題:

GoldenResult.joins("INNER JOIN (SELECT MAX(id) as 'id' 
           FROM report_golden_results 
           GROUP BY platform_id, release_id, configuration_id) latest_builds 
        ON latest_builds.id=report_golden_results.id") 

這是一個解決方法,因爲我仍然不知道如何訪問連接中的範圍,但它的工作原理..!

(即 - 在此解決方案中我根本不使用該範圍)。

相關問題