0

我有一个奇怪的问题,我认为这与我的查找结构方式有关。

TABLE Category
   ID
   CategoryName

TABLE Product
   ID
   ProductName
   Category - Number (SELECT [Category].[ID], [Category].[Category Type] FROM Category ORDER BY [Category Type];)

TABLE SalePrices
   Several fields related to sale date, price, &c.
   ProductName - Text (SELECT [Product].[ID], [Product].[Product Name] FROM Product ORDER BY [Product Name]; 

由于某种原因,当我运行以下查询时,我得到一个空白结果集:

SELECT SalePrices.[Product Name], Product.[Product Name]
FROM SalePrices INNER JOIN Product ON SalePrices.[Product Name] = Product.[Product Name];

我有一个查询,显示SalePrices.UnitPrice我想用ProductNameand显示的 MIN CategoryName,但我没有得到结果,所以我想先简化一下。

当我加入 Product 和 Category 时,我必须匹配Product.[Category Type] = Category.ID;,但是当我尝试这样做时,SalePrices.[Product Name] = Product.[ID];我得到了一个TYPE MISMATCH错误。我不确定我哪里出错了。

最终目标是将SalesPrices<->ProductName连接与这个结合起来:

SELECT Product.[Product Name], Category.[Category Type]
FROM Product INNER JOIN Category ON Product.[Category Type] = Category.ID;
4

1 回答 1

1

正如@Scotch 和@HansUp 在评论中所建议的那样,在Access 表中定义“查找”字段通常被认为是一个坏主意,除了最琐碎的情况之外。它们隐藏了数据库中的真实情况,当您实际尝试使用它们时,它们可能会导致各种混乱(正如您所发现的)。(参考:这里,来自@HansUp 的评论。)

您最好的做法是将表中的查找字段替换为包含相关表中的 ID(键)值的常规数字字段。[Product]然后,如有必要,您可以创建并保存选择查询以显式进行查找并显示结果,因为它们以前出现在[SalePrices]数据表视图中。

于 2013-04-01T14:27:26.277 回答