MySQL SELECT - > с максимальным соответствием

Zeg du Toit спросил: 12 мая 2018 в 04:06 в: mysql

Я работаю над БД рецепта, в котором пользователю сначала предлагается выбрать ингредиенты. Теперь, учитывая тот факт, что запрос выбора, который возвращает только рецепты с предыдущими выбранными ингредиентами, будет скучным, я задавался вопросом, есть ли способ получить эти рецепты с максимальным соответствием выбранным ингредиентам в sql?

Подробнее:

In PseudoCode:
RecipeTable -> Scrambled Eggs(eggs, salt, pepper, milk)
               Fried Eggs(eggs, salt, pepper)the user enters: eggs, salt and milkthe DB returns: Scrambled Eggs(Accordance: 3), Fried Eggs(Accordance: 2)

1 ответ

Zeg du Toit ответил: 12 мая 2018 в 05:42

ok получил ответ на ваш вопрос с помощью группы @jspcal

Вот код

SELECT recipes.recipe_name AS Recipe, COUNT(*) AS Accordance
FROM dbo.recipes
INNER JOIN dbo.steps ON steps._recipe_id = recipes._recipe_id
WHERE dbo.steps.ingr_id = (SELECT dbo.ingredients._ingr_id FROM dbo.ingredients 
                           WHERE ingr_name = 'Salt')
OR dbo.steps.ingr_id = (SELECT dbo.ingredients._ingr_id FROM dbo.ingredients 
                        WHERE ingr_name = 'Chicken')
OR dbo.steps.ingr_id = (SELECT dbo.ingredients._ingr_id FROM dbo.ingredients 
                        WHERE ingr_name = 'Spaghetti')
OR dbo.steps.ingr_id = (SELECT dbo.ingredients._ingr_id FROM dbo.ingredients 
                        WHERE ingr_name = 'Apples')
GROUP BY recipe_name
ORDER BY Accordance DESC;