2015-04-20 4 views
0

У меня возникли трудности с переводом SQL-запроса на производительность ActiveRecord. Буду признателен за их помощь!Перевод SQL-запроса в ActiveRecord (Rails)

SELECT MAX(distances.max) from 
    (SELECT max(distance) 
     FROM 
      (SELECT * from tracks WHERE car_id=1) t , locations l 
     WHERE t.id=l.track_id 
     GROUP BY track_id) distances; 
+1

У вас есть дистанционная модель? – Cyzanfar

+0

Вы слышали о [heredocs] (http://en.wikibooks.org/wiki/Ruby_Programming/Here_documents)? – Cyzanfar

+0

Нет, у меня есть только модель Track и Car, расстояния - это псевдоним для подзапроса – 0xDEADBEEF

ответ

0
def max_track_length 
    sql= Location.select("MAX(distance) as distance") 
      .joins("INNER JOIN tracks ON tracks.id=locations.track_id") 
      .where("tracks.car_id = ?", self.id).group(:track_id).to_sql 
    res=Car.from("(#{sql}) l").maximum("l.distance") 
    res||=0; 
end 
Смежные вопросы