【发布时间】:2016-05-10 10:40:22
【问题描述】:
所以我有一个项目表。每个项目都有一个状态,可以是“每日”、“每月”、“每年”或“未完成”。
我要做的是创建一个单独的 Activerecord(或 SQL)查询,该查询首先(按 created_at)排列未完成的项目,然后按其 created_at 日期排列其余项目(无论其状态如何),同时限制返回的项目总数为15。
例如,如果我有 30 个未完成项目和 30 个年度项目,则查询返回 15 个未完成项目(按其 created_at)。
如果我有 10 个未完成项目和 30 个年度项目,它会返回这 10 个未完成项目(按 created_at),然后返回 5 个年度项目(按 created_at) - 返回的未完成项目应位于返回数组的开头。
如果我没有任何未完成的项目和 30 个年度项目,它将在 created_at 日期返回 15 个年度项目。
感谢您的帮助!
【问题讨论】:
-
为什么是单个查询?最坏情况下的 2 个查询就可以解决问题。最佳情况触发 1 个查询。
-
我认为这个单一的查询是不可能使用 ORM 的
-
单次查询的原因是我在实现无限滚动,需要保留请求的页码偏移量。可以使用两个不同的偏移量,但这看起来很笨拙。
标签: sql ruby-on-rails activerecord