获取与mysql中最近的结果相关联的行

时间:2011-12-28 13:58:02

标签: mysql ruby-on-rails-3

我正在尝试在我的应用程序中获得一个配方缩放方法,它将返回一些适合使用量的更好的测量值。

例如,6人食谱需要1杯面粉。如果你为一个人量身定做,那么1/6一杯面粉就是2.5汤匙,这是一种更好的说法(当你只能用勺子时,为什么要搜索和弄脏量杯?)。

所以我在数据库中有一个重量表,重量以克为单位,相应的测量值和数量。 例如。面粉

 amount   |   measure   |   grams
----------+-------------+---------
   1      |    cup      |    160
   1      |    tbsp     |     10
   1      |    pound    |    454

在我的应用程序中(最好使用activerecord)我正在尝试为配方中的每种成分获得最佳拟合度量。

@ingredients = Recipe.select('food_names.name,
                   ABS(ingredients.grams-weights.grams) as nearest_weight,
                   weights.amount,
                   weights.measure'
               ).joins(
                   {:ingredients=> :food_name},
                   {:food_names=> :weights}
               ).where(
                   "recipes.recipe_id", :recipe_id
               ).order(
                   :nearest_weight
               ).reverse_order

nearest_weight搜索数据库中最接近的权重匹配,但我需要找到与该行关联的权重和度量,此时,我得到所有返回的行。

我需要做的是以某种方式将nearest_weight限制为一行,然后获取该行,以便我知道重量和度量是什么,并且我希望我能在一个查询中完成所有操作。

0 个答案:

没有答案