访问“查找”字段上的JOIN不返回任何结果

时间:2013-04-01 02:23:48

标签: sql ms-access

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

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的MIN,我想用ProductNameCategoryName显示,但我没有得到结果,所以我想简化事先。

当我加入产品和类别时,我必须匹配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;

1 个答案:

答案 0 :(得分:1)

正如@Scotch和@HansUp的评论中所建议的那样,在Access表中定义“查找”字段通常被认为是除了最微不足道的案例之外的所有错误想法。它们隐藏了数据库中的实际内容,当您实际尝试使用时,它们会导致各种混淆(正如您所发现的那样)。 (参考:here,来自@HansUp的评论。)

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