Sql server 无法绑定多部分标识符-5个表的内部联接-无子查询
我一直被这个错误所困扰,在这里找到的相关问题并没有帮助我了解这个问题:Sql server 无法绑定多部分标识符-5个表的内部联接-无子查询,sql-server,sql-server-2008,select,inner-join,identifier,Sql Server,Sql Server 2008,Select,Inner Join,Identifier,我一直被这个错误所困扰,在这里找到的相关问题并没有帮助我了解这个问题: SELECT EventID = a.EventID ,PositionID = a.PositionID ,SubscriberID = a.SubscriberID ,EventTitle = a.EventTitle ,Frequency = a.Frequency ,DueDate = a.DueDate ,NoticeDate = a.NoticeDate ,SubscriberName = e.Subscri
SELECT
EventID = a.EventID
,PositionID = a.PositionID
,SubscriberID = a.SubscriberID
,EventTitle = a.EventTitle
,Frequency = a.Frequency
,DueDate = a.DueDate
,NoticeDate = a.NoticeDate
,SubscriberName = e.SubscriberName
,PositionTitle = d.PositionTitle
,UserID = c.UserID
,UserName = c.UserName
,BackupUserID = b.BackupUserID
FROM
dbo.tblEvent a JOIN
dbo.PositionPeople b JOIN
dbo.UserInfo c JOIN
dbo.Position d JOIN
dbo.Subscriber e
ON
a.PositionID = b.PositionID AND
a.SubscriberID = b.SubscriberID AND
b.IncumbentUserID = c.UserID AND
a.SubscriberID = c.SubscriberID AND
a.SubscriberID = e.SubscriberID AND
a.PositionID = d.PositionID
我没有混合隐式连接和显式连接,也没有像本主题的其他线程所建议的那样使用子查询。对于上面ON子句之后的所有内容(除了e.SubscriberID和d.PositionID),我都会得到这个错误。我尝试了几种不同的方法,但我无法发现问题 您的查询结构似乎不一致,请尝试相同查询的此版本:
SELECT A.EventID
,A.PositionID
,A.SubscriberID
,A.EventTitle
,A.Frequency
,A.DueDate
,A.NoticeDate
,E.SubscriberName
,D.PositionTitle
,C.UserID
,C.UserName
,B.BackupUserID
FROM dbo.tblEvent A
INNER JOIN dbo.PositionPeople B ON B.PositionID = A.PositionID
AND B.SubscriberID = A.SubscriberID
INNER JOIN dbo.UserInfo C ON C.SubscriberID = A.SubscriberID
AND C.UserID = B.IncumbentUserID
INNER JOIN dbo.Position D ON D.PositionID = A.PositionID
INNER JOIN dbo.Subscriber E ON E.SubscriberID = A.SubscriberID
如果要使用此查询设置一些变量,只需在选择原因中添加变量实例化,如下例所示:
SELECT @EventID = A.EventID
,@PositionID = A.PositionID
...
FROM ...
希望这会有所帮助。您的查询结构似乎不一致,请尝试相同查询的此版本:
SELECT A.EventID
,A.PositionID
,A.SubscriberID
,A.EventTitle
,A.Frequency
,A.DueDate
,A.NoticeDate
,E.SubscriberName
,D.PositionTitle
,C.UserID
,C.UserName
,B.BackupUserID
FROM dbo.tblEvent A
INNER JOIN dbo.PositionPeople B ON B.PositionID = A.PositionID
AND B.SubscriberID = A.SubscriberID
INNER JOIN dbo.UserInfo C ON C.SubscriberID = A.SubscriberID
AND C.UserID = B.IncumbentUserID
INNER JOIN dbo.Position D ON D.PositionID = A.PositionID
INNER JOIN dbo.Subscriber E ON E.SubscriberID = A.SubscriberID
如果要使用此查询设置一些变量,只需在选择原因中添加变量实例化,如下例所示:
SELECT @EventID = A.EventID
,@PositionID = A.PositionID
...
FROM ...
希望这会有所帮助。是的。这确实有用。我想我看到了一条关于连接语法的规则,这是我以前不知道的。非常感谢。当谈到查询结构时,有多种解决方案,这不是唯一的解决方案,但我发现它比在WHERE子句中定义连接条件更具可读性。通过使用此结构,可以避免连接条件上的许多错误;-)是的。这确实有用。我想我看到了一条关于连接语法的规则,这是我以前不知道的。非常感谢。当谈到查询结构时,有多种解决方案,这不是唯一的解决方案,但我发现它比在WHERE子句中定义连接条件更具可读性。通过使用此结构,可以避免连接条件上的许多错误;-)