我想为同时具有两种成分的食谱选择recipe_id,但不能像这样使用AND(我的意思是所有列均返回null):
SELECT
vsearch.ingredient_id,
vsearch.ingredtypes_id,
vsearch.name,
vsearch.recipe_id,
vsearch.qingred
FROM
vsearch
WHERE
vsearch.name = 'olive' AND vsearch.name = 'apple'
vsearch是一个视图,它是:
SELECT
ingredient.ingredient_id,
ingredient.ingredtypes_id,
ingredient.name,
quantity.recipe_id,
quantity.ingredient_id AS qingred
FROM
ingredient ,
quantity
WHERE
strong textingredient.ingredient_id = quantity.ingredient_id
这是我的数据库表:
最佳答案
要查找(例如)找到同时包含黄瓜和番茄的食谱ID;
SELECT recipe_id
FROM vsearch
WHERE name = 'cucumber' OR name = 'tomato'
GROUP BY recipe_id
HAVING COUNT(*) = 2
...其中2是必须匹配的成分的名称(在本例中均为两者)
An SQLfiddle to test with。