【问题标题】:Filter one table based on values from another table column根据另一表列中的值过滤一个表
【发布时间】:2014-10-03 13:07:17
【问题描述】:
我有一个包含 2 列(materialID | name)的表“PackagingType”和另一个包含 ID 和材料详细信息的表“materials”。
对于“包装类型”中的每个名称,我想指定可用的材料(例如,在材料 ID 列中,我将有 1、3、4、5)。
我需要将这些材料ID与材料表匹配并提取详细信息。
正确的做法是什么?不确定将数据存储为 1,3,4,5 是否正确,语法是什么样的?
【问题讨论】:
标签:
mysql
compare
comparison
multiple-columns
【解决方案1】:
在关系数据库设计中,您不会将值组合到一个单元格中。有例外,但很少而且相差甚远。这不会是规范化的数据,并且会使未来的查询和分析变得困难/复杂。因此,对于不同的 materialID,PackagingType 应该多次具有相同的名称。
所以表格会有类似的数据
MaterialID Name
1 PackageA
3 PackageA
4 PackageA
5 PackageA
然后,您只需加入材料描述即可获得结果。
SELECT PT.MaterialID, PT.Name, M.Detail
FROM PackagingType PT
INNER JOIN Materials M
on PT.MaterialID = M.MaterialID