Sql “在访问时加入”;查阅“;字段不返回任何结果
我有一个奇怪的问题,我相信这与我的查找结构有关Sql “在访问时加入”;查阅“;字段不返回任何结果,sql,ms-access,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 rel
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
最小值的查询,我想用ProductName
和CategoryName
显示它,但我没有得到结果,所以我想先简化一下
当我加入产品和类别时,我必须匹配产品。[Category Type]=Category.ID代码>,但当我尝试执行SalePrices.[Product Name]=Product.[ID]代码>我得到一个类型不匹配
错误。我不确定哪里出了错
最终的目标是将saleprices
ProductName
连接与此连接结合起来:
SELECT Product.[Product Name], Category.[Category Type]
FROM Product INNER JOIN Category ON Product.[Category Type] = Category.ID;
正如@Scotch和@HansUp在评论中所建议的,在访问表中定义“Lookup”字段通常被认为是一个坏主意,但对于最琐碎的情况除外。它们隐藏了数据库中真正的内容,当您实际尝试使用它们时,它们可能会导致各种混乱(正如您所发现的)。(参考:,通过@HansUp的评论)
最好的做法是将表中的查找字段替换为包含相关表中ID(键)值的常规数字字段。然后,如有必要,您可以创建并保存Select查询,以显式执行查找,并显示以前在[Product]
和[SalePrices]
数据表视图中显示的结果。让我摸不着头脑的一件事是,为什么要将Product.Category查找绑定到ID,但是SalePrices.ProductName查找绑定到实际名称。“当我尝试执行SalePrices时。[Product name]=Product。[ID];我发现类型不匹配”为什么产品名称、类型文本始终等于产品ID?我正在将其与Product.Category的查找进行比较。我不知道为什么一个是数字,另一个是文本,或者如何在不破坏链接表的情况下更改它。查找的哪一部分决定是否使用ID或类型/名称字段?我觉得您可能不熟悉联接(请不要生气,也许我真的不理解您的问题),所以您能用简单的英语说出您希望查询返回的结果吗?我觉得自己把SalePrice.UnitPrice(我在这里没有介绍)、SalePrice.ProductName和Product.Category的.MIN弄糊涂了。