Da en opskrift kan bruge flere ingredienser, og du leder efter opskrifter, der bruger en eller flere af de angivne ingredienser, bør du bruge DISTINCT
søgeord for at forhindre duplikerede resultater, hvor en opskrift bruger mere end én ingrediens fra den angivne liste. Du kan også bruge IN
klausul for at filtrere på flere ingrediens-id'er.
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);
Alternativt, hvis du leder efter opskrifter, der bruger alle de ingredienser, der er angivet på listen, kan du gruppere resultaterne efter opskriftsnavn og kontrollere, om antallet af registreringer er det samme som antallet af ingredienser på din liste.
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
Dette forudsætter, at der ikke vil være duplikerede poster med samme (recipe_id, ingredient_id) tupel (bedre sikret med en UNIK begrænsning).