Sql 多连接语句上的语法错误
您好,我发现这个sql语句有语法错误,有人能告诉我吗?谢谢Sql 多连接语句上的语法错误,sql,ms-access,Sql,Ms Access,您好,我发现这个sql语句有语法错误,有人能告诉我吗?谢谢 String sql = "Select tblStudent.*,tblSchool.*,tblAgents.* " + "FROM tblStudent LEFT JOIN tblSchool " + "ON (tblStudent.schoolID = tblSchool.schoolID) " + "LEFT JOIN tblAgents " + "ON (tblStudent.agentID =
String sql = "Select tblStudent.*,tblSchool.*,tblAgents.* " +
"FROM tblStudent LEFT JOIN tblSchool " +
"ON (tblStudent.schoolID = tblSchool.schoolID) " +
"LEFT JOIN tblAgents " +
"ON (tblStudent.agentID = tblAgents.agentID) " +
"WHERE tblStudent.StudentID='" + studentID + "'";
我希望我能做多次连接
但是我得到了一个语法错误。对于access,带有多个连接的括号表示以下内容。如果有三个联接,则from后面有两个左括号。最后一个联接没有右括号
String sql = "Select tblStudent.*,tblSchool.*,tblAgents.* " +
"FROM (tblStudent LEFT JOIN tblSchool " +
"ON (tblStudent.schoolID = tblSchool.schoolID)) " +
"LEFT JOIN tblAgents " +
"ON (tblStudent.agentID = tblAgents.agentID) " +
"WHERE tblStudent.StudentID='" + studentID + "'";
Access SQL注入已在其他章节中介绍。我相信您的最终SQL应该如下所示:
SELECT tblStudent.*
,tblSchool.*
,tblAgents.*
FROM tblSchool
RIGHT JOIN (
tblAgents RIGHT JOIN tblStudent ON tblAgents.agentID = tblStudent.agentID
) ON tblSchool.schoolID = tblStudent.schoolID
WHERE tblStudent.StudentID=111;
因此,用于创建此SQL的VBA代码应该是
Dim sql As String
sql = "SELECT tblStudent.* ,tblSchool.* ,tblAgents.* " & _
"FROM tblSchool RIGHT JOIN (" & _
"tblAgents RIGHT JOIN tblStudent ON tblAgents.agentID = tblStudent.agentID" & _
") ON tblSchool.schoolID = tblStudent.schoolID " & _
"WHERE tblStudent.StudentID=" & studentID
这里我假设
studentID
是数字字段。另外,我建议不要使用*
从多个表中选择数据,否则列名可能不可预测,并且如注释中所述,它将需要额外的资源,而这些资源将不会被使用。Access在多个联接时需要括号。但我在语句中放了括号。确定,您永远不应该使用*选择所有字段,尤其是当您有一个联接时,因为您在多个列中发送相同的数据,这会浪费服务器资源。你应该列出你需要的列,并且只列出那些列。像这样插入StudentID,你就可以进行sql注入了。请使用参数。括号使用错误。使用查询设计器生成查询,然后将其复制到VBA
Dim sql As String
sql = "SELECT tblStudent.* ,tblSchool.* ,tblAgents.* " & _
"FROM tblSchool RIGHT JOIN (" & _
"tblAgents RIGHT JOIN tblStudent ON tblAgents.agentID = tblStudent.agentID" & _
") ON tblSchool.schoolID = tblStudent.schoolID " & _
"WHERE tblStudent.StudentID=" & studentID