Protože recept může používat více ingrediencí a vy hledáte recepty, které používají jednu nebo více zadaných ingrediencí, měli byste použít DISTINCT
klíčové slovo, abyste zabránili duplicitním výsledkům, pokud recept používá více než jednu přísadu ze zadaného seznamu. Můžete také použít IN
klauzule pro filtrování podle více ID složek.
select DISTINCT r.name
from
recipes r
inner join ingredient_index i
on i.recipe_id = r.recipe_id
where i.ingredient_id IN (7, 5);
Případně, pokud hledáte recepty, které používají všechny přísady uvedené v seznamu, můžete výsledky seskupit podle názvu receptu a zkontrolovat, zda je počet záznamů stejný jako počet přísad ve vašem seznamu.
select r.name
from
recipes r
inner join ingredient_index i
on i.recipe_id = r.recipe_id
where i.ingredient_id IN (7, 5)
GROUP BY r.name
HAVING COUNT(*) = 2
To za předpokladu, že nebudou existovat duplicitní záznamy se stejnou (recipe_id, folder_id) n-ticí (lépe zajištěno s omezením UNIQUE).