First of all, your query can be massively simplified as you do not need the outer query. The following is exactly the same:
SELECT r.recipeTitle AS recipe
FROM recipeIng il, Ingredient i, Recipe r
WHERE (il.ingredientID = i.ingredientID)
AND (il.recipeID = r.recipeID)
AND (i.ING LIKE '%cheese%' AND i.ING LIKE '%salmon%')
Secondly, you don't need all those brackets.
SELECT r.recipeTitle AS recipe
FROM recipeIng il, Ingredient i, Recipe r
WHERE il.ingredientID = i.ingredientID
AND il.recipeID = r.recipeID
AND i.ING LIKE '%cheese%'
AND i.ING LIKE '%salmon%'
Thirdly, you should INNER JOIN your tables to make the relationship between them clearer:
SELECT r.recipeTitle AS recipe
FROM recipeIng il JOIN
Ingredient i ON il.ingredientID = i.ingredientID JOIN
Recipe r ON il.recipeID = r.recipeID
WHERE i.ING LIKE '%cheese%'
AND i.ING LIKE '%salmon%'
At this point, the issue should be clear - there are 2 likely possibilities, and 2 is more likely than 1.
1) Your ING field stores all the ingredients for a recipe in a single field. If this is the case then you do not have a recipe who's ingredients call for both Cheese and Salmon.
2) Your ING field only stores 1 ingredient per row. However, you are asking for a single row which contains both Cheese and Salmon. This is not your intention, and the query is therefore wrong.
-- SELECT ALL RECIPES USING CHEESE *OR* SALMON
SELECT r.recipeTitle AS recipe
FROM recipeIng il JOIN
Ingredient i ON il.ingredientID = i.ingredientID JOIN
Recipe r ON il.recipeID = r.recipeID
WHERE i.ING LIKE '%cheese%'
AND i.ING LIKE '%salmon%'
-- SELECT ALL RECIPES USING CHEESE *AND* SALMON
SELECT r.recipeTitle AS recipe
FROM recipeIng il JOIN
Ingredient iCheese
ON il.ingredientID = i.ingredientID
AND i.ING LIKE '%cheese%' JOIN
Ingredient iSalmon
ON il.ingredientID = i.ingredientID
AND i.ING LIKE '%salmon%' JOIN
Recipe r ON il.recipeID = r.recipeID
Please note the above are for example only - without knowing your schema, these are merely hints and suggestions :)
irefers in each case to the same row, so you'd only get a match if you had something likei.ing = 'salmon cheese spread'. One way to fix this is to have two ingredient tables,i_oneandi_two.FROM recipeIng il, Ingredient i, Recipe r