检查一列的值是否在另一列中 table
Check if Values of one column in another column of different table
我是 SQL 的新手,对以下情况感到震惊,你们中的任何人都可以帮助解决这个问题。
我想检查产品的成分是否允许在生产线上使用,如果允许,然后是可以生产该产品的生产线名称。
Table 1
ProductionLine Allergen
BB1 Tree nut
BB1 Peanut
BB1 Milk
BB1 Wheat
BB2 Tree nut
BB2 Peanut
BB2 Milk
BB2 soy
BB2 Egg
Table 2
Product Ingredients
P1 Tree nut
P1 Peanut
P1 Milk
P1 soy
这里的产品 P1 可以在 BB2 生产线上生产,因为所有成分都在 BB2 过敏原清单上。所以我想将结果设置为
预期结果
Product Ingredients ProductionLine
P1 Tree nut BB2
P1 Peanut BB2
P1 Milk BB2
P1 soy BB2
如果任何一种成分不允许在任何生产线上使用,那么我们就不能在该生产线上生产产品。
假设 table 中没有重复项,您可以使用 left join
和 group by
。关键是计算匹配的数量,并确保它与配料的总数相匹配。
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;
因此,理想情况下,过敏原会有一些您可以加入的 ID,这样您就可以执行类似
的操作
SELECT Table2.Product, Table2.Ingredients, Table1.ProductionLine FROM Table1.AllergenId JOIN Table2.IngredientAllergenId
如果您的表的结构不是这样的,它们可能应该是这样的。但如果你不能改变它,你可以这样做。
SELECT Table2.Product, Table2.Ingredients, Table1.ProductionLine FROM Table1.Allergen JOIN Table2.Allergen
我是 SQL 的新手,对以下情况感到震惊,你们中的任何人都可以帮助解决这个问题。
我想检查产品的成分是否允许在生产线上使用,如果允许,然后是可以生产该产品的生产线名称。
Table 1
ProductionLine Allergen
BB1 Tree nut
BB1 Peanut
BB1 Milk
BB1 Wheat
BB2 Tree nut
BB2 Peanut
BB2 Milk
BB2 soy
BB2 Egg
Table 2
Product Ingredients
P1 Tree nut
P1 Peanut
P1 Milk
P1 soy
这里的产品 P1 可以在 BB2 生产线上生产,因为所有成分都在 BB2 过敏原清单上。所以我想将结果设置为
预期结果
Product Ingredients ProductionLine
P1 Tree nut BB2
P1 Peanut BB2
P1 Milk BB2
P1 soy BB2
如果任何一种成分不允许在任何生产线上使用,那么我们就不能在该生产线上生产产品。
假设 table 中没有重复项,您可以使用 left join
和 group by
。关键是计算匹配的数量,并确保它与配料的总数相匹配。
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;
因此,理想情况下,过敏原会有一些您可以加入的 ID,这样您就可以执行类似
的操作SELECT Table2.Product, Table2.Ingredients, Table1.ProductionLine FROM Table1.AllergenId JOIN Table2.IngredientAllergenId
如果您的表的结构不是这样的,它们可能应该是这样的。但如果你不能改变它,你可以这样做。
SELECT Table2.Product, Table2.Ingredients, Table1.ProductionLine FROM Table1.Allergen JOIN Table2.Allergen