Eftersom ett recept kan använda flera ingredienser och du letar efter recept som använder en eller flera av de angivna ingredienserna, bör du använda DISTINCT
nyckelord för att förhindra dubbletter av resultat där ett recept använder mer än en ingrediens från den angivna listan. Du kan också använda IN
klausul för att filtrera på flera ingrediens-ID:n.
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, om du letar efter recept som använder alla ingredienser som anges i listan, kan du gruppera resultaten efter receptnamn och kontrollera om antalet poster är samma som antalet ingredienser i din lista.
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
Detta förutsätter att det inte kommer att finnas dubbletter av poster med samma (recept_id, ingrediens_id) tupel (bättre säkerställt med en UNIK begränsning).