根据另一个表列中的值过滤一个表

时间:2014-10-03 13:07:18

标签: mysql compare comparison multiple-columns

我有一张桌子" PackagingType"有2列(materialID | name)和另一个表"材料"有身份证和材料明细。

对于" packagingtype"中的每个名称;我想指定哪些材料可用(例如,在材料ID列中我将有1,3,4,5)。

我需要将这些材质ID与材料表相匹配,并提取细节。

这样做的正确方法是什么?不确定将数据存储为1,3,4,5是否正确,语法是什么样的?

1 个答案:

答案 0 :(得分: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