我一直在尝试为客户设置简单查询,以使其产品表与批发商的价格目录相匹配。我遇到的唯一问题是公司仅使用产品的SKU格式化他们的项目,而价格则将它们列为MFC-SKU。我想出了几种方法来解决这个问题,但由于我是Access的新手,我总体上很难过。
有没有人知道我可以匹配两个具有相同数字的字段,但不相匹配?
例如,我想将Frigidaire.f1中的“3206165”与WeeklyPriceList.f1中的“WCI 3206165”进行匹配。它们没有相同的密钥ID,但它们确实在f2中具有匹配的信息(但不足以让我将查询作为基础)。
任何信息都会有所帮助,因为我完全被困在这里。非常感谢你!
答案 0 :(得分:1)
使用ON
子句限制访问权限。除了相等之外,你不能使用任何表达式。
EG。在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
更新:正如其他人建议的那样,您可以使用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
答案 1 :(得分:0)
LIKE
和通配符%
也可以使用。它可能没有其他答案那么快,但它会解释所有可能性。
SELECT Frigidaire.Description, Frigidaire.f1, WeeklyPriceList.Price
FROM Frigidaire, WeeklyPriceList
WHERE Frigidaire.f1 LIKE "%WeeklyPriceList.f1"
答案 2 :(得分:0)
由于您是Access的新手,最简单的方法是使用额外的“WCI”信息获取您的表,并创建一个完全复制该表的查询,但修剪该字段中的“WCI”信息。当您需要进行任何匹配时,只需引用Query而不是Table。一旦您对查询,dlookup或SQL更加熟悉,那么您可以使用上述建议来引用数据。
答案 3 :(得分:0)
我可能会将Mid函数与InStr函数结合使用来隔离您需要的数字,这样您就可以加入这两个字段。我认为您使用此方法遇到的唯一问题是数据类型不匹配,但使用Val函数将其转换为数字很容易修复。希望有所帮助!
答案 4 :(得分:0)
您可以使用赞使用 WHERE 创建联接:
SELECT
Frigidaire.Description,
Frigidaire.f1,
WeeklyPriceList.Price
FROM
Frigidaire,
WeeklyPriceList
WHERE
Frigidaire.f1 LIKE "*" & [WeeklyPriceList].[f1] & "*"