OleDb SQL查询中的两个内部联接

时间:2018-02-26 20:26:35

标签: c# sql ms-access-2010 oledb oledbcommand

我尝试使用OleDbCommand将SQL查询创建到Access数据库(.accdb)中。

虽然此命令正常(在OleDbCommand.ExecuteReader()中):

string command =
   "SELECT cred.* " +
   "FROM TB_CREDENTIALS cred " +
   "INNER JOIN TB_REL_USERS_CREDENTIALS rel ON cred.CRED_ID = rel.REL_USR_CRED_CRED_ID ";

这个没有,我无法理解为什么(我看到的所有例子都使用完全相同的语法):

string command =
   "SELECT cred.* " +
   "FROM TB_CREDENTIALS cred " +
   "INNER JOIN TB_REL_USERS_CREDENTIALS rel ON cred.CRED_ID = rel.REL_USR_CRED_CRED_ID " +
   "INNER JOIN TB_USERS usr ON usr.USR_ID = rel.REL_USR_CRED_USER_ID ";

给出的例外是以下System.Data.OleDb.OleDbException

  

查询表达式中的语法错误(缺少运算符)' cred.CRED_ID = rel.REL_USR_CRED_CRED_ID INNER JOIN TB_USERS usr ON usr.USR_ID = rel.REL_USR_CRED_USER_I' (message is cut here)

版本和细节:

  • 数据库是在Access 2010上创建的.accdb文件
  • 使用System.Data.OleDb.OleDbConnection
  • 在C#中创建连接
  • 连接提供商为"Microsoft.ACE.OLEDB.12.0"

(这似乎是一个无用的查询,但我当然会添加WHERE usr.SOME_FIELD = some_condition

1 个答案:

答案 0 :(得分:2)

“对于多表连接,您必须将多余的连接嵌套在括号中:”

SQL multiple join statement