无法绑定多部分标识符“alias.field”
Posted
技术标签:
【中文标题】无法绑定多部分标识符“alias.field”【英文标题】:The multi-part identifier "alias.field" could not be bound 【发布时间】:2011-10-06 19:23:12 【问题描述】:您好,我一直收到错误消息“无法绑定多部分标识符“Users.USERS_ID””我不确定查询出了什么问题。
这就是我的查询的样子;
SELECT Events.*, Users.UserName,Users.USERS_ID,
Users.ThumbnailPic,
Users.CountryName,
ISNULL(UserStatusUpdates.UserStatus,'No Updates')AS LastUpdate,
UserStatusUpdates.MediaTypeID,UserStatusUpdates.USERSTATUS_ID,(UserStatusUpdates.AddDate)
FROM Events
JOIN Users ON Events.UserID = Users.USERS_ID
LEFT JOIN (SELECT TOP 1 UserStatusUpdates.UserStatus,UserStatusUpdates.MediaTypeID,
UserStatusUpdates.USERSTATUS_ID,UserStatusUpdates.AddDate, UserStatusUpdates.UserID
FROM UserStatusUpdates where UserStatusUpdates.UserID = Users.USERS_ID
ORDER BY AddDate DESC) AS UserStatusUpdates ON UserStatusUpdates.UserID = Events.UserID
WHERE Events.EventID = @EventID
AND Users.bDeleted = 'False'
AND Users.bSuspended = 'False'
END
谁能看到我做错了什么
【问题讨论】:
Users 表确实有一个名为 USERS_ID(不是 USER_ID)的列? 特别是,有一些UserID列和一个USERS_ID? 是的,Users 表中的主键称为 USERS_ID。 Events 表中的外键称为 UserID。 【参考方案1】:我很确定问题出在这一点:
LEFT JOIN (SELECT TOP 1 UserStatusUpdates.UserStatus,UserStatusUpdates.MediaTypeID,
UserStatusUpdates.USERSTATUS_ID,UserStatusUpdates.AddDate, UserStatusUpdates.UserID
FROM UserStatusUpdates where UserStatusUpdates.UserID = Users.USERS_ID
ORDER BY AddDate DESC) AS UserStatusUpdates ON UserStatusUpdates.UserID = Events.UserID
SELECT TOP 1 子句无权访问 Users.USERS_ID。
我看不到您在哪里使用从 UserStatusUpdates 返回的任何数据。因此,我假设您正在使用该位来过滤掉该连接不产生任何结果的行。在这种情况下,您可以将其从连接中移出,并使用 EXISTS 移到 where。但这是一个左连接,所以即使我的假设也并不适用。
我认为问题和答案中描述了解决方案 Top 1 with a left join
【讨论】:
我已经编辑添加了一个可行的建议。我需要更多地了解您要完成的工作,而不必猜测更具体。 抱歉,为了缩短代码,我删除了 userupdates 部分,我正在使用它。 看到我回答的结尾,我添加了一个链接,指向我认为可以解决您的问题的内容 嗨 Hatchet,我试过它可以工作,但是它没有给我用户在 UserStatusUpdates 表中没有项目的项目。 你可能想用你当前的代码发布一个不同的问题,或者添加一个评论来显示你用什么替换了 TOP 1。以上是关于无法绑定多部分标识符“alias.field”的主要内容,如果未能解决你的问题,请参考以下文章