2014-10-10 56 views
-2

我試圖根據其他兩個表(TDCE_NETDCE_NE_COMP)更新表(DMS_TEST_LOAD)。任何想法下面的查詢有什麼問題?我不斷收到無用的「UPDATE語句中的語法錯誤」。來自Access的錯誤。提前致謝。MS Access:有多個連接的更新語句

UPDATE DMS_TEST_LOAD AS DMS 
((INNER JOIN TDCE_NE_COMP AS COMP 
ON COMP.[NAME] LIKE DMS.[Trunk Group Number (TGN)] AND COMP.[NE_COMP_TYPE_ID]=421) 
INNER JOIN TDCE_NE AS NE ON NE.[ID]=COMP.[NE_ID] AND NE.[NAME]=DMS.[Office]) 
SET DMS.[Char Parm 1 (Trk Dir)] = COMP.[CHAR_PARM1]; 
+0

你不需要從內部連接? – boomoto 2014-10-10 17:02:34

+1

爲什麼不在Access的「設計視圖」中構建它?它會爲你寫出聲明。 – 2014-10-10 17:11:18

+1

@iDevlop因爲Access將以最簡單,最低效的方式開發查詢,並且我的查詢將永遠運行。 – user1947544 2014-10-10 17:49:32

回答

1

不太確定SQL系統MS訪問使用什麼。但你可能想試試這個

UPDATE DMS 
SET DMS.[Char Parm 1 (Trk Dir)] = COMP.[CHAR_PARM1] 
FROM DMS_TEST_LOAD AS DMS 
INNER JOIN TDCE_NE_COMP AS COMP 
    ON COMP.[NAME] LIKE DMS.[Trunk Group Number (TGN)] 
     AND COMP.[NE_COMP_TYPE_ID]=421 
    INNER JOIN TDCE_NE AS NE 
    ON NE.[ID]=COMP.[NE_ID] AND NE.[NAME]=DMS.[Office]; 
+0

沒有運氣,@Alex。不幸的是,MS Access沒有這種直觀的語法。我相信在加入DMS之前必須加入聯盟[Char Parm 1(Trk Dir)]。 – user1947544 2014-10-10 17:07:21

+0

在此處找到示例:http://www.fmsinc.com/microsoftaccess/query/snytax/update-query.html#UPDATE_Query_SQL_Syntax UPDATE tblAddress INNER JOIN tblZipCodes ON [tblAddress]。[ZipCode] = [tblZipCodes]。[郵政編碼] SET [tblAddress]。[City] = [tblZipCodes]。[City], [tblAddress]。[State] = [tblZipCodes]。[State] WHERE([Country] ='US') – Alex 2014-10-10 17:13:55

+0

could the問題與你喜歡?你需要將字符串與另一個字符串進行比較嗎? http://stackoverflow.com/questions/14236410/access-query-where-one-field-is-like-another – Alex 2014-10-10 17:20:35

0

在MS Access中,你必須確保在連接中正確使用括號。我相信你是以下後:

UPDATE DMS 
SET DMS.[Char Parm 1 (Trk Dir)] = COMP.CHAR_PARM1 
FROM (DMS_TEST_LOAD AS DMS 
    INNER JOIN TDCE_NE_COMP AS COMP 
    ON (COMP.NAME = DMS.[Trunk Group Number (TGN)]) AND (COMP.NE_COMP_TYPE_ID = 421)) 
    INNER JOIN TDCE_NE AS NE 
    ON (NE.Name = DMS.Office) AND (COMP.NE_ID = NE.ID) 

注意我刪除了LIKE=取而代之。您沒有使用任何通配符,因此它甚至不能作爲LIKE。如果你想使用LIKE你可能會尋找以下:

COMP.NAME LIKE "*" & DMS.[Trunk Group Number (TGN)] & "*" 
0

如何這樣的事情...

UPDATE DMS 
SET [Char Parm 1 (Trk Dir)] = COMP.[CHAR_PARM1] 
FROM DMS_TEST_LOAD DMS 
INNER JOIN TDCE_NE_COMP AS COMP 
    ON COMP.[NAME] LIKE DMS.[Trunk Group Number (TGN)] 
    AND COMP.[NE_COMP_TYPE_ID]=421 
INNER JOIN TDCE_NE AS NE 
    ON NE.[ID]=COMP.[NE_ID] 
    AND NE.[NAME]=DMS.[Office] 

未經測試,但重構爲ANSI92「標準」 SQL

並可以測試(無需實際更新ofc)...

SELECT [Char Parm 1 (Trk Dir)], COMP.[CHAR_PARM1] 
FROM DMS_TEST_LOAD DMS 
INNER JOIN TDCE_NE_COMP AS COMP 
    ON COMP.[NAME] LIKE DMS.[Trunk Group Number (TGN)] 
    AND COMP.[NE_COMP_TYPE_ID]=421 
INNER JOIN TDCE_NE AS NE 
    ON NE.[ID]=COMP.[NE_ID] 
    AND NE.[NAME]=DMS.[Office]