2014-12-13 105 views
0

我收到錯誤:「語句錯誤來自子句」JOIN SQL問題

如何解決此問題?這是我的SQL:

SELECT INVOICE.INV_NUMBER, 
     PRODUCT_revised.P_DESCRIPT, 
     CUSTOMER.CUS_CODE, 
     CUSTOMER.CUS_LNAME, 
     CUSTOMER.CUS_FNAME, 
     LINE.LINE_UNITS AS [Purchase_Quantity], 
     LINE.LINE_PRICE AS [Unit_Price], 
     (Purchase_Quantity * Unit_Price) AS [Line Total] 
FROM INVOICE, PRODUCT_revised, CUSTOMER, LINE 
FULL JOIN INVOICE 
    ON INVOICE.INV_NUMBER = LINE.INV_NUMBER; 
+0

哪裏是你的方案嗎? – SMA 2014-12-13 17:23:22

+0

Access SQL中不支持'FULL JOIN'。如果使用Access的查詢設計器設置連接,它可以幫助您避免嘗試使用Access不支持的功能。 – HansUp 2014-12-13 17:25:47

回答

3

你的FROM子句甚至不是大致正確的。您正試圖混合「舊」和「新」JOIN。選擇一種格式,並堅持下去。可能最好使用特別需要INNER JOIN for INNER JOINS的較新格式。在我的例子中,我假設 INNER JOIN是你想要的類型,但取決於你真正想要提取的內容可能並非如此。

此外,您還缺少大部分JOIN的JOIN條件,因此該查詢會吐出大量不需要的記錄。

爲了正確編寫一個包含同一個表兩次的JOIN(這很好,而且是一個常見的事情),您需要別名這些表,以便在尚未提供的JOIN條件下區分它們。

最後,FULL OUTER JOIN很少需要。即使它在這種情況下所需的MS Access不支持它。

所以,你最終的FROM子句會是這個樣子:

FROM ((((Invoice AS INV1 INNER JOIN Product_Revisied ON <JOIN Conditions Here>) 
    INNER JOIN Customer ON <JOIN Conditions Here>) 
    INNER JOIN Line ON <JOIN Conditions Here>) 
    INNER-OR-OUTER JOIN Invoice AS INV2 ON <JOIN Conditions Here>)