Так какой вопрос то стоит?
"Найти рецепты, в которые входит хотя бы один ингредиент из списка?
SELECT `recipe_id`, `ingredient_id`
FROM `recipe_ingredients`
WHERE `ingredient_id` IN (501, 900)
"Рецепт можно приготовить из указанных ингредиентов"? Значит все ингредиенты данного рецепта присутствуют в заданном списке. То есть, общее количество ингредиентов рецепта равно количеству ингредиентов этого рецепта, присутствующих в списке.
SELECT `recipe_id`, COUNT(*) AS `count`,
SUM(`ingredient_id` IN (501, 900)) AS `avail`
FROM `recipe_ingredients`
GROUP BY `recipe_id`
HAVING `count` = `avail`
P.S.
А поле `id` в таблице лишнее. Достаточно составного первичного ключа (`recipe_id`, `ingredient_id`).