Ошибка в не очень сложном SQL запросе

Имеется база данных с рецептами. В ней есть такие таблицы ingredients (id, name) (Например: id:1 name:Соль)

measures (id, name) (Например: id:1 name:Чайная ложка)

recipeingredients (recipe_id, ingredient_id, measure_id, amount(кол-во)) (Например: id:1 ingredient_id:2 measure_id:2 amount:3)

recipes (id, name, description, instructions, difficulty, preparing_time)

Задача стоит такая, имеется несколько ингридиентов, нужно вывести те рецепты которые включают хотя бы 1 из этих ингридиентов.

Вот что у меня вышло, но он в некоторых моментах отрабатывает некорректно:

SELECT   r.name as name,
         r.preparing as time,
         r.difficulty as difficulty
FROM recipes r
JOIN recipeingredients ri on r.id = ri.recipe_id
JOIN ingredients i on i.id = ri.ingredient_id
LEFT JOIN    measures mu on mu.id = measure_id
WHERE EXISTS (SELECT recipe_id 
              FROM recipeingredients ri 
              WHERE r.id = ri.recipe_id 
              AND ri.ingredient_id = 4 OR ri.ingredient_id = 5 OR ri.ingredient_id = 6)
GROUP BY r.name, r.preparing, r.difficulty
ORDER BY r.preparing ASC

Спасибо за ваше время которое вы возможно уделите моей проблеме.


Ответы (0 шт):