匹配不匹配的字段?

我一直在试图为客户设置简单的查询,以使他们的产品表与批发商的价格目录相匹配。 我碰到的唯一问题是公司只用产品的SKU格式化了他们的产品,而价格则被列为MFC-SKU。 我想出了一些方法来解决这个问题,但是由于我是Access新手,所以我总体上很难。

有没有人知道我可以匹配两个有相同数字的字段,但不匹配的方式呢?

例如,我想将Frigidaire.f1中的“3206165”与WeeklyPriceList.f1中的“WCI 3206165”相匹配。 他们没有相同的密钥ID,但他们有信息在f2匹配(但没有足够的专门查询的基础上)。

任何信息都会帮助我,因为我完全陷在这里。 非常感谢!

ON子句的访问是相当严格的。 除了相等之外,您不能使用任何expression式。

例如。 在SQL Server中,你会写:

 SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price FROM Frigidaire INNER JOIN WeeklyPriceList ON Frigidaire.f1 = 'WCI ' + WeeklyPriceList.f1 

使用Access,您将需要使用WHERE子句中条件的逗号分隔列表:

 SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price FROM Frigidaire, WeeklyPriceList WHERE 'WCI ' & Frigidaire.f1 = WeeklyPriceList.f1 OR 'SKR ' & Frigidaire.f1 = WeeklyPriceList.f1 

更新:正如其他人所build议的那样,您可以使用LIKE运算符, Mid()函数或Right()函数来获得结果:

 SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price FROM Frigidaire, WeeklyPriceList WHERE Frigidaire.f1 LIKE '%' & WeeklyPriceList.f1 SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price FROM Frigidaire, WeeklyPriceList WHERE Mid(Frigidaire.f1, 4) = WeeklyPriceList.f1 SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price FROM Frigidaire, WeeklyPriceList WHERE Right(Frigidaire.f1, Len(WeeklyPriceList.f1)) = WeeklyPriceList.f1 

LIKE和通配符%也将起作用。 它可能不像其他答案那么快,但它将考虑到所有的可能性。

  SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price FROM Frigidaire, WeeklyPriceList WHERE Frigidaire.f1 LIKE "%WeeklyPriceList.f1" 

由于您是Access的新手,最简单的方法是将您的表与额外的“WCI”信息结合起来,然后创build一个查询来精确地复制该表,然后从该字段中修剪“WCI”信息。 当你需要做任何匹配时,只需引用查询而不是表。 一旦您对查询,dlookups或SQL更加熟悉,则可以使用上述build议引用数据。

我可能会使用Mid函数结合InStr函数来隔离你需要的数字,然后让你join这两个领域。 唯一的问题,我认为你会遇到使用这种方法将是一个数据types不匹配,但很容易修复使用Val函数将其转换为数字。 希望有所帮助!

您可以使用Like来使用WHERE创build连接:

 SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price FROM Frigidaire, WeeklyPriceList WHERE Frigidaire.f1 LIKE "*" & [WeeklyPriceList].[f1] & "*"