无法绑定多部分标识符 - 5个表的内部连接 ​​- 没有子查询

时间:2014-08-27 19:35:37

标签: sql-server sql-server-2008 select inner-join identifier

我一直坚持这个错误,SO上的相关问题并没有帮助我看到这个问题:

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  

我没有混合隐式和显式JOIN,也没有使用本主题上其他线程建议的子查询。我在上面的ON子句之后的所有内容都会出现此错误(e.SubscriberID和d.PositionID除外)。我尝试了几种变化,但我无法发现问题。

1 个答案:

答案 0 :(得分:4)

您的查询结构似乎不一致,请尝试同一查询的此版本:

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原因中添加变量实例化,如下例所示:

SELECT @EventID = A.EventID
    ,@PositionID = A.PositionID
    ...
FROM ...

希望这会有所帮助。