在rails中可以使用union all吗?我正在整理一个查询,但我需要使用union all,有没有办法使它适应rails?以下是我的查询:
select sum(DV.Importe + DV.iva)
from venta INNER JOIN DetalleVet DV ON DV.RutaId = [venta].RutaID AND DV.IdEmpresa = [venta].IdEmpresa AND DV.Docto = [venta].Documento
where venta.Rutaid=8 and diao=611 and venta.TipoVta='Contado'
union all
select SUM(DP.Importe + DP.Iva) from pedidosliberados PL inner join detallepedidoliberado DP on PL.PEDIDO=DP.PEDIDO and PL.RUTA=DP.RUTA and PL.IDEMPRESA=DP.idempresa
where PL.cancelada=0 and PL.status=5 and PL.Tipo='Contado' and PL.Ruta=8 and PL.DiaO_entrega=611发布于 2018-06-26 21:27:29
调整查询到rails的最简单方法可能是使用find_by_sql方法。看起来是这样的:
Model.find_by_sql
所以翻译你的查询,它可以是这样的。
Client.find_by_sql("
SELECT Sum(DV.importe + DV.iva)
FROM venta
INNER JOIN detallevet DV
ON DV.rutaid = [venta].rutaid
AND DV.idempresa = [venta].idempresa
AND DV.docto = [venta].documento
WHERE venta.rutaid = 8
AND diao = 611
AND venta.tipovta = 'Contado'
UNION ALL
SELECT Sum(DP.importe + DP.iva)
FROM pedidosliberados PL
INNER JOIN detallepedidoliberado DP
ON PL.pedido = DP.pedido
AND PL.ruta = DP.ruta
AND PL.idempresa = DP.idempresa
WHERE PL.cancelada = 0
AND PL.status = 5
AND PL.tipo = 'Contado'
AND PL.ruta = 8
AND PL.diao_entrega = 611
")
# => [<Client id: 1, sum: 22 >, <Client id: 2, sum: 44>...]或者,如果您没有模型并且只想执行原始SQL,ActiveRecord有一个名为execute的整洁的助手函数。
sql = "Select * from ... your sql query here"
records_array = ActiveRecord::Base.connection.execute(sql)参考here。
https://stackoverflow.com/questions/51050687
复制相似问题