如何选择具有多个类别的产品

时间:2013-04-05 10:28:43

标签: asp.net ms-access

根据我的问题标题,所以我有这样的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.

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

2 个答案:

答案 0 :(得分:1)

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

productid  categoryid
1          1
1          2
1          3
2          3
3          1
3          2

答案 1 :(得分:1)

首先,您的表格未规范化。查看“产品表”中的“类别”列。每个单元格应该只有一个值。通过允许多个值,您可能面临各种问题,包括更新/插入异常以及您现在看到的内容。你也很难做出选择和其他操作。相反,请考虑使用此示例规范化表格:

<强>分类

categoryid   categoryname
1            one
2            two
3            three

<强>产品

ProdductId   ProductName
4            prod1
5            prod2
6            prod 3

<强> Category_Prod

CategoryId   ProductId
1            3
1            4
2            3

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