Microsoft OLE DB Provider for SQL 服务器错误'80040e14'
列前缀'tblUsers'没有 与表名或别名匹配 在查询中使用
正在执行的查询是:
SELECT tblProjects.projectName, tblUsers.username
FROM tblProjects
INNER JOIN
tblUsers ON tblProjects.userID = tblUsers.ID
WHERE (tblProjects.ID = 190)
当我在SQL Server 2005中运行它时,它运行正常并返回正确的结果!在我的代码中,这会引发错误。
通过经典的ASP脚本调用它:
strSQL = "SELECT tblProjects.projectName, tblUsers.username FROM tblProjects INNER JOIN tblUsers ON tblProjects.userID = tblUsers.ID WHERE (tblProjects.ID = " & lngProjectID & ")"
rsCommon.open strSQL, adoCon
strProjectPath = "../projects/" & rsCommon("username") & "/" & rsCommon("projectName")
rsCommon.close
答案 0 :(得分:2)
我个人认为没有任何理由会抛出错误。查询和代码似乎很好。问题可能在别的地方吗?您可以尝试添加@Micheal建议的括号。希望有效。
答案 1 :(得分:1)
对于初学者,我会尝试将所有表名和列名放在方括号中,看看问题是否得到解决:
SELECT [tblProjects].[projectName], [tblUsers].[username]
FROM [tblProjects]
INNER JOIN
[tblUsers] ON [tblProjects].[userID] = [tblUsers].[ID]
WHERE [tblProjects].[ID] = 190
答案 2 :(得分:1)
不确定,但它是否可能???? Ole DB提供程序错误地阻塞“INNER JOIN”而不是简单的“JOIN”并且引擎解析的令牌缺少别名tblUsers?
答案 3 :(得分:1)
尝试使用架构为表名添加前缀。 即。
SELECT [dbo].[tblProjects].[projectName], [dbo].[tblUsers].[username]
FROM [dbo].[tblProjects]
INNER JOIN
[dbo].[tblUsers] ON [dbo].[tblProjects].[userID] = [dbo].[tblUsers].[ID]
WHERE ([dbo].[tblProjects].[ID] = 190)
如果您使用dbo
以外的架构,请指定它
当您运行查询时,可能会选择默认架构,这与通过简单连接字符串连接并尝试运行此查询的情况不同。