2016-10-24 187 views
1

我一直在試圖爲客戶設置簡單的查詢,以便將他們的產品表與批發商的價格目錄進行匹配。我遇到的唯一問題是公司僅使用產品的SKU格式化了它們的商品,而定價商將它們列爲MFC-SKU。我想出了一些方法來解決這個問題,但由於我是Access的新手,所以我的整體工作很困難。匹配不匹配的字段?

有沒有人知道一種方法,我可以匹配兩個字段具有相同的數字,但不匹配,否則?

作爲一個例子,我想將Frigidaire.f1中的'3206165'與WeeklyPriceList.f1中的'WCI 3206165'進行匹配。他們沒有相同的密鑰ID,但他們確實在f2中有匹配的信息(但對我來說,並不足以讓查詢脫離該信息)。

任何信息都會有幫助,因爲我完全陷在這裏。非常感謝!

+0

一種先進的方法將使用'regex'(模式匹配)。但是對於一個簡單的解決方案,可以使用「通配符」。我將檢查文檔,但可能是'%' –

回答

1

訪問與ON子句相當受限制。除了相等之外,您不能使用任何表達式。

例如,在SQL Server中,你可以這樣寫:

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

隨着訪問您將需要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 
+0

WHERE語句應該顛倒:WHERE WeeklyPriceList.f1 ='WCI'&Frigidaire.f1',因爲額外文本在WeeklyPriceList字段中。 – geeFlo

+0

這個很好用,謝謝!像GEEFLO說的那樣,WHERE語句反轉了。 –

+0

我的意思是添加更多,但我沒有意識到打進入會發送評論...那麼,是否有辦法爲它可能增加多種可能性?例如,添加'WCI'或'SKT'和Frigidaire.F1。這聽起來像你說的不可能,但可能在SQL Server中,這將是可能的? –

0

一個LIKE和通配符%也將工作。它可能不如其他答案那麼快,但它將解釋所有可能性。

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

我還沒有能夠得到這個公式的工作。有沒有我失蹤的東西? –

+0

這實際上與上面的評論相同(在哪裏需要交換的字段) –

+0

SELECT Frigidaire.Description,Frigidaire.f1,WeeklyPriceList.Price FROM Frigidaire,WeeklyPriceList WHERE WeeklyPriceList.f1 LIKE「%Frigidaire.f1」 –

0

因爲你是新來的訪問,最簡單的方法就是把你的表具有額外的「WCI」的信息,並創建正是複製了表的查詢,但修剪掉的「WCI」信息領域。當你需要做任何匹配時,只需引用查詢而不是表格。一旦您對查詢,dlookups或SQL更加滿意,則可以使用上述建議引用數據。

0

我可能會使用Mid函數結合InStr函數來隔離您需要的數字,然後允許您加入這兩個字段。我認爲使用這種方法遇到的唯一問題是數據類型不匹配,但使用Val函數將其轉換爲數字很容易。希望有所幫助!

0

您可以使用創建一個連接使用WHERE

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