簡體   English   中英

sql查詢左加入mysql與ms-access數據庫

[英]sql query left join on mysql vs ms-access DB

這個查詢

SELECT * 
FROM tblContracts 
LEFT JOIN tblPartys ON tblContracts.id = tblPartys.Contract_id 
INNER JOIN tblAdministrators 
        ON tblContracts.AdministratorID = tblAdministrators.ID

適用於mysql數據庫,但不適用於Access DB !!!

我受到這個錯誤的打擊:

System.Data.OleDb.OleDbException:查詢表達式'tblContracts.id = tblPartys.Contract_id的內部語法錯誤(缺少運算符)INNER JOIN tblAdministrators ON tblContracts.AdministratorID = tblAdministrators.I'。 在System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams,Object&executeResult)在System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(System.Data.OleDb.OleDbCommand.ExecuteCommandText(Data&Execute。) System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior行為,String方法)的System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior行為)的OleDb.OleDbCommand.ExecuteCommand(CommandBehavior行為,Object&executeResult)

嘗試在第一個聯接周圍添加幾個括號

SELECT * 
FROM (tblContracts 
LEFT JOIN tblPartys ON tblContracts.id = tblPartys.Contract_id) 
INNER JOIN tblAdministrators 
        ON tblContracts.AdministratorID = tblAdministrators.ID

從您發布的錯誤中,您將ON tblContracts.AdministratorID = tblAdministrators.IDON tblContracts.AdministratorID = tblAdministrators.I如下所述:

查詢表達式'tblContracts.id = tblPartys.Contract_id INNER JOIN tblAdministrators ON tblContracts.AdministratorID = tblAdministrators.I'中的語法錯誤(缺少運算符)。 在 ...

因此,請確保將其寫為ON tblContracts.AdministratorID = tblAdministrators.ID

嘗試這個:

  SELECT *  FROM ((tblContracts 
   LEFT JOIN tblPartys ON tblContracts.id = tblPartys.Contract_id ) 
     INNER JOIN tblAdministrators ON tblContracts.AdministratorID = tblAdministrators.ID )  

以我的經驗,如果您問我,Access會喜歡括號...有點太多了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM