2

根据我的问题标题,我有这样的 Access 数据库结构:

类别

categoryid   categoryname
1            one
2            two
3            three

产品表:

productid    productname    categories
1            one            1,2,3
2            two            3
3            three          1,2

当我的 categoryid 为 1 时,我不知道选择产品的方式有多个类别。因为当我使用In运算符时,我遇到了一些错误..

Select * from product where categories In (categodyid) because cannot compare a collection with one value.

我被困在这里!请帮我!谢谢。

4

2 回答 2

1

这是典型的父子一对多关系。您需要一个[ProductCategory]表来将给定的产品与多个类别相关联:

productid  categoryid
1          1
1          2
1          3
2          3
3          1
3          2
于 2013-04-05T10:35:04.887 回答
1

首先,您的表格未标准化。查看产品表中的类别列。每个单元格应该只有一个值。通过允许多个值,您将面临各种问题,包括更新/插入异常以及您现在看到的内容。您还使选择和其他操作变得非常困难。相反,请考虑使用以下示例规范化您的表:

类别

categoryid   categoryname
1            one
2            two
3            three

产品

ProdductId   ProductName
4            prod1
5            prod2
6            prod 3

类别_产品

CategoryId   ProductId
1            3
1            4
2            3

第三张表是一种补救多对多模式的方法。如果您对如何执行此操作或如何使用它有任何疑问,请告诉我

于 2013-04-05T10:39:06.620 回答