微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql-如何结合SQL查询的位置和顺序

我有通过比赛联系在一起的项目和拨款.补助金有有效期限.我想按赠款到期日期对项目的匹配项进行排序.

这是基于有效期的匹配项:

def self.expires_date_between(from, to)
  Match.where(:grant_id => Grant.where("expires_at  >= ? and expires_at <= ?", from, to))
end

显示了基于特定日期范围的匹配.

def current_matches
  range = user.current_period_range
  matches.expires_date_between(range[0], range[1])
end

这样可以很好地显示基于特定时间段的赠款,但是赠款不是按日期顺序显示(expires_at).似乎是按赠款的创建日期对赠款进行了排序.如何更改查询,以便按有效期顺序列出赠款?

我试过了:

def self.expires_date_between(from, to)
  Match.where(:grant_id => Grant.where("expires_at  >= ? and expires_at <= ?", from, to).order('expires_at asc'))
end

这不会引发错误,但也不会更改授予的顺序.有任何想法吗?

解决方法:

假设您已经在模型中定义了关联,那么这应该可以工作(但尚未经过测试):

Match
  .joins(:grant)
  .merge(Grant.where("expires_at  >= ? and expires_at <= ?", from, to))
  .order('expires_at asc')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐