【发布时间】:2014-10-16 18:15:57
【问题描述】:
来自 Sitepoint 的 r937 非常友好地帮助我找出从数据库返回正确结果所需的查询。
我需要的是能够将此查询用作范围,并能够将其他范围链接到这个范围。
查询是:
SELECT coasters.*
FROM (
SELECT order_ridden,
MAX(version) AS max_version
FROM coasters
GROUP BY order_ridden
) AS m
INNER JOIN coasters
ON coasters.order_ridden = m.order_ridden
AND COALESCE(coasters.version,0) = COALESCE(m.max_version,0)
我尝试制作这样的范围:
scope :uniques, lambda {
find_by_sql('SELECT coasters.*
FROM (
SELECT order_ridden,
MAX(version) AS max_version
FROM coasters
GROUP BY order_ridden
) AS m
INNER JOIN coasters
ON coasters.order_ridden = m.order_ridden
AND COALESCE(coasters.version,0) = COALESCE(m.max_version,0)')
}
但是当我尝试将另一个示波器链接到它时,它失败了。有没有办法像普通范围一样运行此查询?
【问题讨论】:
标签: sql ruby-on-rails chaining scopes