2015-12-29 75 views
0

我想使用映射表中的值更新表。我認爲它是一個UPDATE和SELECT語句,但我不知道如何處理條件。這是在VBA Access中。使用條件語句的MS Access SQL查詢

我有兩個表具有以下字段:

mainTable: [column1],[column2],[xcode],[ycode] 
mapTable: [xcode],[ycode],[mapping] 

我需要做的mapTable一個映射,但它具有以下條件

If mainTable.[column1] = "000" or mainTable.[column1] = "001" Then 
    mainTable.[column2] = mapTable.[mapping] 
    WHERE mapTable.[xcode] = mainTable.[xcode] 
    AND mapTable.[ycode] = mainTable.[ycode] 
Else 
    mainTable.[column2] = mapTable.[mapping] 
    WHERE mapTable.[xcode] = mainTable.[xcode] 
End If 

有沒有辦法在一個單一的捕捉到了這個SQL查詢?

+0

你可能有這種想法的一些問題。例如,如果映射表的(xcode,ycode,mapping)值爲(1,1,「MAP1」)和(1,2,「MAP2」),並且mainTable中有一條記錄包含xcode 1,但Column1不是000或001,那麼mainTable會更新爲「MAP1」或「MAP2」,我不確定哪一個。你可能想確保這些表格被適當地定義。 – OpiesDad

+0

你*可以*在1個查詢中做到這一點,但正如zedfoxus所暗示的那樣,它會更好,更直觀2. – OpiesDad

回答

1

您將需要兩個查詢,這是一件好事:一個查詢得到的結果與if一起得到,另一個查詢給出的結果與else得到的結果相同。

查詢1:

update maintable m inner join maptable map on m.xcode = map.xcode and m.ycode = map.ycode 
set m.column2 = map.mapping 
where m.column1 = "000" or m.column1 = "001" 

QUERY2:

update maintable m inner join maptable map on m.xcode = map.xcode 
set m.column2 = map.mapping 
where NOT (m.column1 = "000" or m.column1 = "001") 
+0

這很完美,謝謝! –