Ruby on rails 如何使查询适应rails

Ruby on rails 如何使查询适应rails,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我正在尝试将一个查询改编为RubyonRails,在查询中有一个子查询,其中包含一个from,我不知道如何将其改编为rails。原始查询如下: SELECT B.Codigo, C.NombreCorto, B.Descripcion, B.HI, B.latitude, B.longitude, C.Direccion, ISNULL((SELECT SUM(TOTAL) FROM Venta WHERE RutaId=B.RutaId AND DiaO=B.DiaO AND CodCli

我正在尝试将一个查询改编为RubyonRails,在查询中有一个子查询,其中包含一个from,我不知道如何将其改编为rails。原始查询如下:

SELECT B.Codigo, C.NombreCorto, B.Descripcion, B.HI, B.latitude, B.longitude, C.Direccion, ISNULL((SELECT SUM(TOTAL) 
FROM Venta 
WHERE RutaId=B.RutaId AND DiaO=B.DiaO AND CodCliente=B.Codigo AND Cancelada='0' AND TOTAL>0),0) AS TOTAL 
FROM BitacoraTiempos B LEFT JOIN Clientes C ON C.IdCli=B.Codigo 
WHERE B.RutaId='161' AND B.DiaO='893' 
ORDER by B.HI 
这就是我迄今为止所适应的:

  def self.search_gps_venta(params)

    query = select('[bitacoratiempos].Codigo,[bitacoratiempos].RutaId,[bitacoratiempos].Descripcion,[bitacoratiempos].HI,[bitacoratiempos].latitude,[clientes].NombreCorto AS c_nombre,[clientes].Direccion AS c_direccion')
         .joins('left join clientes ON bitacoratiempos.Codigo=clientes.IdCli')
         .where("(bitacoratiempos.RutaId = :rutaId or :rutaId = '') AND (bitacoratiempos.DiaO = :diaO or :diaO = '') AND (bitacoratiempos.IdEmpresa = :idempresa)",{rutaId: params[:search], diaO: params[:diaO]})
    query

  end
在控制器中,我这样称呼它:

  def busqueda_gps_venta
    @ventas = Bitacoratiempo.search_gps_venta(params)

    respond_to do |format|
    format.js
    end
  end
如何在rails查询中包含原始查询的这一部分:

  SELECT B.Codigo, C.NombreCorto, B.Descripcion, B.HI, B.latitude, B.longitude, C.Direccion, ISNULL((SELECT SUM(TOTAL) 
FROM Venta 
WHERE RutaId=B.RutaId AND DiaO=B.DiaO AND CodCliente=B.Codigo AND Cancelada='0' AND TOTAL>0),0) AS TOTAL 

首先,我注意到你的改编。。。实际上与原始SQL的查询不完全相同-这会让人感到困惑,并且更难找到帮助您的方法-其中有一个组在原始查询中不存在,并且有更多的where条件。。。您是否以某种方式将查询与子查询弄乱了?你不应该这么做。您的rails查询将具有与原始查询相同的结构(大致相同)…第二:看看这个查询是否可以帮助您:@TarynEast谢谢您的回答。对不起,我已经更新了我的帖子。我的问题是,在原始查询中有一个子查询,其中一个“FROM”包含到另一个名为“Venta”的表中,我该如何做?有什么方法可以在rails中使用原始查询而不进行修改吗?是的。。。看看我链接到的另一个问题的答案。另外,您可以将SQL的大字符串传递给rails。。。