我有配方表和配料表和表,将配料连接到配方。
我有一个成分列表,如何编写一个SELECT语句(或存储过程),它将返回包含所有给定成分的食谱?
如何为MySQL编写此查询?
答案 0 :(得分:3)
我想我终于有了解决方案。 :)
SELECT *
FROM recipeTable r JOIN ingredintsTable i ON r.RecId= i.RecId
WHERE i.IngredientId IN (1,2)
GROUP BY r.id
HAVING ( COUNT(r.id) > 1 )
答案 1 :(得分:1)
SELECT *
FROM repice r
WHERE EXISTS
(
SELECT NULL
FROM ingredients i
WHERE i.recipe_id = r.id
AND i.ingredient_id IN (1, 2, 3, 4)
LIMIT 1 OFFSET 3
)
OFFSET
参数应该等于n - 1
,其中n
是列表中的成分数。
这假定(recipe_id, ingredient_id)
组合是唯一的。
答案 2 :(得分:1)
你没有在HAVING子句中声明'd'。我假设你打算把'r'放在那里。