首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查不同表的另一列中某一列的值是否

检查不同表的另一列中某一列的值是否
EN

Stack Overflow用户
提问于 2019-09-03 16:16:07
回答 2查看 49关注 0票数 0

我对SQL很陌生,并在下面的场景中进行了说明,请任何一个人在这方面提供帮助。

我想要检查产品的成分是否允许在生产线上,如果允许,那么生产线名称的产品,它可以生产。

表1

代码语言:javascript
复制
ProductionLine       Allergen
  BB1          Tree nut
  BB1          Peanut
  BB1           Milk
  BB1           Wheat
  BB2          Tree nut
  BB2          Peanut
  BB2           Milk 
  BB2           soy
  BB2           Egg

表2

代码语言:javascript
复制
Product                Ingredients
P1                 Tree nut
P1                 Peanut
P1                 Milk 
P1                 soy

在这里,产品P1可以在BB2生产线上生产,因为所有的成分都允许在BB2变应原清单上。因此,我希望将结果集设置为

预期结果

代码语言:javascript
复制
  Product            Ingredients          ProductionLine
  P1                 Tree nut                 BB2
  P1                 Peanut                   BB2
  P1                 Milk                     BB2   
  P1                 soy                      BB2

如果任何一种原料都不允许在任何生产线上使用,那么我们就不能在该生产线上生产产品。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-03 16:30:06

假设两个表中都没有重复项,则可以使用left joingroup by。关键是计算匹配的数量,并确保它与配料的总数相匹配。

代码语言:javascript
复制
select t2.product, t1.productionline
from (select t2.*,
             count(*) over (partition by product) as num_products
      from table2 t2
     ) t2 left join
     table1 t1
     on t2.ingredient = t1.allergen
group by t2.product, t1.productionline, t2.num_products
having count(t1.ingredient) = num_products;
票数 0
EN

Stack Overflow用户

发布于 2019-09-03 16:32:53

所以,理想情况下,Allergen应该有一些ID,您可以加入到其中,这样您就可以执行以下操作

代码语言:javascript
复制
SELECT Table2.Product, Table2.Ingredients, Table1.ProductionLine FROM Table1.AllergenId JOIN Table2.IngredientAllergenId 

如果您的表不是这样构造的,那么它们可能应该是这样的。但如果你不能改变它,你就能做到。

代码语言:javascript
复制
SELECT Table2.Product, Table2.Ingredients, Table1.ProductionLine FROM Table1.Allergen JOIN Table2.Allergen 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57775400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档