2012-04-28 111 views
0

如果關鍵字出現在另一個參考表中,我需要兩個表來比較和更新一個表中的值。如果特定字段包含在參考表中,將表與參考表進行比較並更新值

A是一個數據表,其中包含個人列表,其中包含最後名字和名字的單獨字段。

B是另一個參考表,其中包含具有姓氏和名字的個人的定義列表。

我在Access中編寫更新查詢以檢查表A中的個人,看他們是否在表B中列出並更新A中的字段以指示他們是否在表B中列出。使用如果兩個表中的最後名字和第一名字相同的標準,那麼匹配就足夠了。問題是名稱字段表A可能包含不在引用表B中的附加信息(例如標題或憑證),該表僅列出名和姓。我無法控制表A中的數據,但需要儘可能地根據類似標準進行連接。

我不確定如何在SQL中表示以下內容。我希望下面的僞代碼,解釋什麼,我試圖完成:

UPDATE A 
    SET A.[isinB]=true 
WHERE 

A.[lastname] contains B.[lastname] 
and 
A.[firstname] contains B.[firstname] 

例子:

A.[lastname] = SMITH MD PHD 
A.[firstname] = JOHN M 

B.[lastname] = SMITH 
B.[firstname] = JOHN 

在這個例子中,我想這被認爲是一個匹配,而A 。[isinB]設置爲true。

回答

0

在Access中,你可以做一個通配符比較:

UPDATE A SET A.[isinB]=true 
WHERE 
B.[Firstname] Like "*" & A.[Firstname] & "*" AND B.[Lastname] Like "*" & B.[Lastname] 

書擋「」的通配符指示訪問內找到該字段的‘Like’的引用,前任何位置的字符串。 「JOHN」在「JOHN M」內將返回true。您可能需要考慮指定第一個「」,具體取決於您的數據。