提问者:小点点

SQL(左联接)获取在另一个表中包含所有成分的所有食谱


我需要得到所有的食谱,所有的配料都在另一张桌子上,我不知道我怎么能做到这一点。

“配料”表(来自配方):

  1. 列是一个成分id(唯一)
  2. 列是每个成分的配方id
  3. 列是成分(此时为字符串)

'UserIngredients'表(来自用户):

  1. 列也只是一个id(唯一)
  2. 柱是成分

现在我只想拿回配方id 13,因为这个配方只需要“黄油”和“梅尔”。我不想得到的是同样需要“黄油”和“Mehl”的食谱,但也需要其他东西,因为这不在用户配料表中。

现在我需要一个查询(我想是一个内部连接)来获取包含其他表中所有成分的配方(ID)。我希望你能理解我的问题并能帮助我。非常感谢!


共1个答案

匿名用户

你需要一个LEFT连接成分用户成分,然后组的累赘

select i.recipeid
from ingredients i left join useringredients ui
on ui.ingredient = i.ingredient
group by i.recipeid
having count(*) = count(ui.ingredient)

条件具有Count(*)=Count(ui.ingredient)确保所有的成分和没有更多的被用于该累赘