получить строку, связанную с ближайшим результатом в MySQL - PullRequest
1 голос
/ 28 декабря 2011

Я пытаюсь получить метод масштабирования рецепта в моем приложении, который будет возвращать некоторые более приятные измерения, адаптированные к количеству, которое служит употреблению.

Например, рецепт на 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 одной строкой, а затем получить эту строку, чтобы я знал вес и меру, и я надеюсь, что смогу сделать все это водин запрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...