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子句中定义连接条件更具可读性。通过使用此结构,可以避免连接条件上的许多错误;-)