MySQL SELECT -> с максимальным соответствием - PullRequest
0 голосов
/ 05 июня 2018

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

Подробнее:

In PseudoCode:
RecipeTable -> Scrambled Eggs(eggs, salt, pepper, milk)
               Fried Eggs(eggs, salt, pepper)

the user enters: eggs, salt and milk

the DB returns: Scrambled Eggs(Accordance: 3), Fried Eggs(Accordance: 2)

1 Ответ

0 голосов
/ 05 июня 2018

хорошо, получил ваш отзыв об использовании группы @ 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;
...