我有种感觉,这个问题以前有人问过,但我一直在搜索,但无法得出明确的描述。
我有一个 Rails 应用程序,用于保存在特定日期(如生日)发生的项目。现在我想创建一个 View ,它创建一个表(或其他东西,div 也可以),它声明一次指定的日期,然后一个一个地迭代相关的项目。
项目有一个日期字段,当然,与单独表格或其他内容中的日期无关。
我当然可以查询数据库约 30 次(因为我想要表示一个月的项目),但我认为它看起来很难看并且会大量重复。我希望结果看起来像这样(暂时将其视为一个包含两列的表格):
Jan/1 | jan1.item1.desc
| jan1.item2.desc
| jan1.item3.desc
Jan/2 | jan2.item1.desc
| etc.
所以我想我需要知道两件事:如何构建正确的查询(但它可能像 Item.where("date > ? < ?", lower_bound, upper_bound))
一样简单,以及如何将其转换为 View 。
我还考虑过一个散列,其中包含每一天的键和一个值数组,但我必须像上面那样构造(重复),我认为这不是很优雅。
使用 GROUP BY
与其他查询相比,似乎没有什么不同(当然,除了项目的分组)。只是一组对象,但我可能做错了。
抱歉,如果这是一个基本问题。我对这个领域(以及一般的编程)还比较陌生。
最佳答案
如果您正在制作日历,您可能希望GROUP BY
date:
SELECT COUNT(*) AS instances, DATE(`date`) AS on_date FROM items GROUP BY DATE(`date`)
这假设您的列字面上称为 date
,这被视为 SQL 保留字,这可能是个坏主意。如果是这种情况,无论何时使用它,您都需要对其进行转义,在 MySQL 表示法中使用 ``` 。 Postgres 和其他人使用不同的方法。
对于范围内的实例,您可能需要的是 BETWEEN
运算符:
@items = Item.where("`date` BETWEEN ? AND ?", lower_bound, upper_bound)
关于ruby - 遍历日期范围内给定日期的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14445530/