2010-10-26 139 views
1

考慮這個Access查詢:此Microsoft Access查詢有什麼問題?

SELECT prod_Parts.ID, prod_Parts.Number, prod_Parts.Revision, prod_Parts.Description 
FROM prod_JT_Shipping 
INNER JOIN (prod_JobTraveller 
      INNER JOIN prod_Parts 
       ON prod_JobTraveller.PartID = prod_Parts.ID) 
    ON prod_JT_Shipping.JT_ID=prod_JobTraveller.ID; 

而且這樣的:

SELECT prod_Parts.ID, prod_Parts.Number, prod_Parts.Revision, prod_Parts.Description 
FROM prod_Parts; 

上都出現此錯誤:

「不是一個有效的名稱。確保它不包含無效字符或標點符號,並且不會太長

這怎麼解決?

+0

如果你認爲你的查詢是OK和Access認爲它不是,它不是。 – CanSpice 2010-10-26 21:35:47

+0

在證明無辜之前,所有的代碼都是有罪的。沒有例外。 – Sharpie 2010-10-26 21:36:11

+0

那麼,如果你的問題沒有問題,你在這裏做什麼? – 2010-10-26 21:36:50

回答

1

這部分在這裏不看的權利:

INNER JOIN (prod_JobTraveller 
INNER JOIN prod_Parts ON prod_JobTraveller.PartID = prod_Parts.ID) 

如果合併,沒有空格,它看起來像

INNER JOIN (prod_JobTraveller INNER JOIN prod_Parts ON prod_JobTraveller.PartID = prod_Parts.ID) 

這是不是有效的SQL。

+0

使用圓括號對連接進行分組是合法的,儘管我很少使用它,以至於我無法確定OP的查詢是否有效,但我認爲它已驗證。 – 2010-10-26 21:35:56

+0

不起作用。訪問中斷線。我錯誤地複製和粘貼。無論如何,問題出現 – Igor 2010-10-26 21:37:36

+0

將直接將OP查詢粘貼到查詢設計窗口的SQL視圖中。 – Fionnuala 2010-10-26 21:50:24

0

好的。我已簡化查詢:

SELECT prod_Parts.ID,prod_Parts.Number,prod_Parts.Revision,prod_Parts.Description FROM prod_Parts;

同樣的錯誤:)

+0

'prod_Parts'是一個基表還是一個'VIEW'(持久查詢對象)?無論哪種方式,發佈SQL DDL重新創建它將有所幫助。 'Number'是Access中的一個保留字(ACE,Jet,不管),但是在SELECT子句中用表名限定它不應該引起問題。 – onedaywhen 2010-10-27 08:18:03

2

從錯誤信息來看,你必須在查詢一些看不見的控制字符,這是造成問題。

嘗試從頭開始重新輸入查詢,它很可能會起作用。

附註:我覺得更容易遵循,如果都寫在這個順序連接(即與ON子句直接跟隨每個JOIN):

SELECT 
    prod_Parts.ID, prod_Parts.Number, prod_Parts.Revision, prod_Parts.Description 
FROM 
    (
    prod_JT_Shipping 
    INNER JOIN prod_JobTraveller ON prod_JT_Shipping.JT_ID=prod_JobTraveller.ID 
) 
    INNER JOIN prod_Parts ON prod_JobTraveller.PartID = prod_Parts.ID 
+0

我考慮過了。我在提問之前做過 – Igor 2010-10-26 21:59:57

+0

您是否嘗試過剝離表格?你有沒有檢查腐敗? – Fionnuala 2010-10-26 22:00:48