INGREDIENT(ingredient-id,name,price-ounce)
RECIPE(recipe-id,name,country,time)
USES(rid,iid,quantity)
rid是配方ID的外键,而iid是外键Ingredient_id
我如何找到仅属于一种配方的成分?
我已经尝试了几种方法,但是不确定如何处理。
答案 0 :(得分:2)
提取恰好在一种配方(HAVING COUNT(*) = 1
)中出现的成分:
SELECT ingredient_id,
name
FROM (SELECT ingredient.ingredient_id,
ingredient.name,
COUNT(*)
FROM ingredient
JOIN uses
ON ingredient.ingredient_id = uses.iid
GROUP BY ingredient.ingredient_id,
ingredient.name
HAVING COUNT(*) = 1
)
答案 1 :(得分:1)
我只使用聚合:
1.41421,
11.4018,
34.4093,
0
如果要使用名称(而不是ID),则可以加入配料表。
注意:select u.iid
from uses u
group by u.iid
having count(distinct u.rid) = 1;
允许同一配方多次使用一种成分。如果不允许这样做,请改用count(distinct)
。