2011-03-22 123 views
0

我有兩個表的MS Access更新從另一個表

Table 1 
Date  ID  State 
3/22  1  state 1 
3/21  2  state 2 
3/20  3  state 1 


Table 2 
Date  ID  New_State 
3/21  1  state 3 
3/20  2  state 3 

表1變成

Table 1 
Date  ID  State 
3/22  1  state 1 
3/21  2  state 3 
3/20  3  state 1 

這就是我想做的事:

如果Table1.ID =表2 .ID和Table1.Date < = Max(Table2.Date)和Table1.Date> = Min(Table2.Date)Then 我想將Table1.State更改爲Table2.New_State,其中使用的行的最大日期是Table2.Date> = Table1.Date

我該怎麼做?我一直在嘗試更新查詢。

回答

1

第一件事,「日期」不應該用作字段名稱,它是一個保留字。你在找麻煩。我甚至不想寫下來,所以我會用myDate代替。
第二件事,爲什麼要使用更新查詢? 90%的時間沒有必要。仔細想想。

這就是說,你必須首先在表2上查詢出最小值和最大值。喜歡的東西:

SELECT ID, Min([myDate]) as Start, Max([myDate]) as Finish FROM t2 GROUP BY id 

保存該查詢qLimits,並在那裏你加入表1與ID qLimits更新查詢,並設置一個過濾器表1 [指明MyDate] = qLimits之間開始和qLimits完成

!!

這應該做到這一點。

+0

也許,也許不是 - 如果加入最小/最大查詢,結果不可更新,那很可能是這樣。完全取決於上下文... – 2011-03-24 19:38:33