如何使查询适应rails

时间:2017-01-31 20:21:25

标签: ruby-on-rails ruby ruby-on-rails-4

我正在尝试将查询调整为ruby on rails,在查询内部有一个带有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 

0 个答案:

没有答案