Select Distinct ...
From Recipes As R
Where R.ingredient in(ingredient_a, ingredient_b...)
And Not Exists(
Select 1
From Recipes As R2
Where R2.Recipe = R.Recipe
And R2.Ingredient In(ingredient_d)
)
Seperti yang disebutkan Jeffrey L Whitledge, kueri di atas akan mengembalikan resep apa pun yang memiliki setidaknya satu bahan dalam daftar yang diinginkan dan tidak ada dalam daftar yang tidak diinginkan. Namun, jika Anda ingin mengembalikan resep yang mengandung semua bahan-bahan dalam daftar yang diinginkan dan tidak ada dalam daftar yang tidak diinginkan yang dapat Anda lakukan:
Select Distinct ...
From Recipes As R
Where Exists (
Select 1
From Recipes As R2
Where R2.Recipe = R.Recipe
And R2.ingredient in(ingredient_a, ingredient_b...)
Having Count(*) = @CountOfPassedIngredients
)
And Not Exists(
Select 1
From Recipes As R2
Where R2.Recipe = R.Recipe
And R2.Ingredient In(ingredient_d)
)
Dalam skenario ini, Anda harus terlebih dahulu menentukan jumlah bahan yang diinginkan.