Rails以最低价格查找DISTINCT记录

时间:2015-09-05 18:53:17

标签: ruby-on-rails

我有一个模特

Model-1有字段

  • 数字价格
  • 价格

数字可以相同。 我想显示所有Model-1记录,但如果有两个或更多记录具有相同的编号,我希望它只显示具有最低价格的记录。

我将如何在Controller中编写查询。 请不要在条件下建议我。

1 个答案:

答案 0 :(得分:1)

首先,让我们在SQL中考虑这个问题。该查询会是什么样的?

如果您想要最低的特定值,那么您将创建一个询问价格的查询,并按数字排序,然后按价格排序。

library(qdapTools)
mtabulate(strsplit(gsub("\\(\\d+%\\)", "", x), ";"))



##   Chicken Duck Goose Pigeon Tree sparrow Turkey Wild bird Wild duck
## 1       1    1     1      1            1      1         1         1
## 2       0    0     0      0            1      0         0         0
## 3       1    0     0      0            0      0         0         0

这将确保您的条目的顺序首先按数字排序,然后按最低价格排序(ASC是升序,因此从1到10)。然后你只得到你关心的一个元素。

在Rails中,如果你正在使用ActiveRecord,那么这可能是这样的。

SELECT *
FROM model-1
WHERE number = :number
ORDER BY number ASC, price ASC
LIMIT 1;