[英]SQL query to ruby on rails
I am wandering if you can help me with this. 如果您能帮助我,我在徘徊。
I have this query on SQL and I need to do it in my rails app. 我在SQL上有此查询,我需要在Rails应用程序中进行查询。
These query's represent the same result and works good. 这些查询代表相同的结果,并且效果很好。
SELECT DISTINCT ON (i.id)
i.id, i.den_cont, c.date_expired
FROM Items i
JOIN Calibrations c ON c.item_id = i.id
ORDER BY i.id, date_expired desc
and 和
select codigo, numero, den_cont, date_expired
from items
join calibrations c
on items.id = c.item_id
inner join (select item_id, MAX(date_expired) as FECHA
from calibrations
group by item_id) as i2
on c.item_id = i2.item_id and c.date_expired = i2.FECHA
I have this, I need to change it to do the above.. 我有这个,我需要更改它以完成上述操作。
@items = Item.joins(:calibrations).where('calibrations.date_expired <= ?', '2014/09/01')
Does something like this help? 这样有帮助吗?
Items.join(:calibrations)
.where('calibrations.date_expired <= ?', '2014-09-01')
.order('items.id')
.group('items.id', 'items.den_cont')
.select('items.id', 'items.den_cont', 'MAX(calibrations.date_expired)')
I assume items.id is the primary key and then the second group argument is, just so you can select the den_cont column. 我假设items.id是主键,然后第二个组参数是,只要您可以选择den_cont列即可。
EDIT: This is also an option, 编辑:这也是一个选项,
Items.join(:calibrations)
.where('calibrations.date_expired <= ?', '2014-09-01')
.order('items.id')
.order('calibrations.date_expired DESC')
.select('DISTINCT ON (items.id) items.id, items.den_cont, calibrations.date_expired AS colaboration_expired')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.