1

查询从来都不是我的强项。我正在尝试修改我当前的查询以允许按 ASC/DESC 排序。

为此,我有一个模型 Activity,它扩展为 Share、Scan、Review、Redeem(可通过 Activity.type 访问)。

我目前的查询是

results=Activity.select("*, count(*) as count").where(created_at: date_from..date_to).group(:user_id).having("count > 0").count("type='#{val}', count(*) #{desc/asc}")

这给了我类似的东西:

{2=>1, 3=>1, 1=>305, 111=>99, 110=>98, 109=>97, 108=>96, 107=>95, 106=>94, 105=>93,...

这里的问题是,前 2 个有(type=#{val}).count= 0。这意味着它们下面有 Activity 记录,但它们的类型不同。无论如何要修改查询,以便这些 .count=0 实际上尊重排序?

否则,作为一种解决方法,我可以手动将所有这些添加到数组中,然后最后评估它们。

编辑:更新到我当前的问题

4

1 回答 1

1

你试过这个:

results=Activity.select("*, count(*) as count")
.where(created_at: date_from..date_to).group(:user_id, :type)
.having("count > 0").order("type ASC, count(*) DESC")
于 2012-09-18T15:37:20.923 回答