我在尝试执行以下代码时遇到错误,请帮助我
If Convert.ToString(Session("userType")).ToLower() = "admin" Then
cmd.CommandText = "select sno, (SELECT UserName FROM UserDetails WHERE userid=Maintenanceinfo.userid) AS userid, (SELECT Category_Name FROM Maintenance_Category WHERE Category_Value=Maintenanceinfo.Category_Value) AS Category_Value, Maintenance, January, February, March, April, May, June, July, August, September, October, November, December from Maintenanceinfo where year = " & dt1 & " Order by Category_Value"
ElseIf Convert.ToString(Session("userType")).ToLower() = "manager" Then
cmd.CommandText = "select sno, (SELECT UserName FROM UserDetails WHERE userid=a.userid) AS userid, (SELECT Category_Name FROM Maintenance_Category WHERE Category_Value=Maintenanceinfo.Category_Value) AS Category_Value, Maintenance, January, February, March, April, May, June, July, August, September, October, November, December from Maintenanceinfo a,UserDetails b where a.userid=b.userid and b.Managerid= " & Session("userId") & " and year = " & dt1 & " Order by Category_Value "
Else
cmd.CommandText = "select sno, (SELECT UserName FROM UserDetails WHERE userid=Maintenanceinfo.userid) AS userid, (SELECT Category_Name FROM Maintenance_Category WHERE Category_Value=Maintenanceinfo.Category_Value) AS Category_Value, Maintenance, January, February, March, April, May, June, July, August, September, October, November, December from Maintenanceinfo with (nolock) where userid= " & Session("userId") & " and year = " & dt1 & " Order by Category_Value "
End If
生成的错误是The multi-part identifier "Maintenanceinfo.Category_Value" could not be bound
感谢您的帮助
答案 0 :(得分:1)
问题可能在于第二个陈述(尽管你真的应该花一点时间来帮助我们解决哪些三个单独的SQL语句引发了这个问题)。 / p>
SQL是:
select sno, (SELECT UserName FROM UserDetails WHERE userid=a.userid) AS userid,
(SELECT Category_Name FROM Maintenance_Category WHERE
Category_Value=Maintenanceinfo.Category_Value) AS Category_Value,
Maintenance, January, February, March, April, May, June, July, August,
September, October, November, December
from Maintenanceinfo a,UserDetails b
where a.userid=b.userid and b.Managerid= " & Session("userId") &
" and year = " & dt1 & "
Order by Category_Value
此子查询导致错误:
(SELECT Category_Name FROM Maintenance_Category WHERE
Category_Value=Maintenanceinfo.Category_Value)
因为此时名称Maintenanceinfo
不在范围内,因为对于此查询,您已为此表引入了别名 - a
。所以正确的查询应该是:
select sno, b.UserName AS userid,
(SELECT Category_Name FROM Maintenance_Category WHERE
Category_Value=a.Category_Value) AS Category_Value,
Maintenance, January, February, March, April, May, June, July, August,
September, October, November, December
from Maintenanceinfo a
inner join
UserDetails b
on
a.userid = b.userid
where b.Managerid= " & Session("userId") &
" and year = " & dt1 & "
Order by Category_Value
我还在,
条款中切换到ANSI连接语法而不是FROM
- 它们只在标准中存在了20多年......
我还删除了一个不需要的子查询,因为你已经加入了UserDetails
表。