2

我有点感觉以前有人问过这个问题,但我一直在寻找,但无法明确描述。

我有一个 Rails 应用程序,它保存在特定日期(如生日)发生的项目。现在我想创建一个视图来创建一个表(或其他东西,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))以及如何将其转换为视图。

我还考虑过一个哈希,其中每个日期都有一个键和一个值数组,但我必须像上面那样构建(重复),我认为这不是很优雅。

与其他查询相比,使用GROUP BY似乎没有让我有任何不同(当然,除了项目的分组)。只是一组对象,但我可能做错了。

对不起,如果这是一个基本问题。我对该领域(和一般编程)相对较新。

4

1 回答 1

1

如果您正在制作日历,您可能想要GROUP BY约会:

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)
于 2013-01-21T19:15:31.470 回答