我有一个网站,其中列出了不同类别和子类别的产品-相当标准的东西。然而,我现在需要列出同一产品在多个类别-我怎么能做到这一点?
我在使用代码:
"SELECT * FROM ProductTable WHERE Category = 1"
我可以通过在category表中输入多个数字来实现。 "1 2 3"
使用代码:
"SELECT * FROM ProductTable WHERE Category LIKE 1"
但这也会返回第10类和第11类的产品(我有20个类别)。
我可能是从错误的Angular 来处理这个问题,但有没有办法让代码工作?
3条答案
按热度按时间9udxz4iz1#
由于类别和产品之间不再有一对多关系,因此需要一个新表来提供所需的多对多关系。比如:
主键:(类别\u id,产品\u id)
这将允许产品以规范化的方式属于多个类别,而不是将category字段视为id列表。
fdbelqdn2#
要补充davidethell的答案,请搜索并阅读“数据库规范化”。良好而简单的关系是关系数据库的关键。维基百科有一篇很好的文章,但也有很多类似的文章:https://en.m.wikipedia.org/wiki/database_normalization
jobtbby33#
好吧,对于其他人来说,这是我的代码:
“从producttable.intproductid=linktable.intproduct上的producttable内部联接(linktable.intcategory=categorytable.intcategoryid上的linktable内部联接categorytable)中选择*,其中linktable.intcategory=%s”
我有三个表:第一个是产品表,每个产品都有一个唯一的编号,这是主键。第二个是category表,每个category都有一个唯一的编号,该编号是主键。然后我创建了第三个包含两列的表;intproduct和intcategory符合david的上述回答。这是存储产品/类别列表的第三个表,每个产品都有一个单独的行用于它所列的每个类别。