【发布时间】:2011-07-18 02:04:59
【问题描述】:
我有以下表格:
具有主键和用户名的用户,例如
ID 用户名 1 弗雷德 2约翰 3 杰克
具有主键和事件名称的事件
ID 事件名称 1 法拉利路演 2 花展
具有主键、状态更新和用户 ID(外键)的 UserStatusUpdates 表
ID 用户ID 用户状态 1 1 真的很好 2 1 现在离开 3 2 我同意
还有一个 Event Attendee 表,它有一个主键和两个外键(Event 主键和 User 主键)
ID 用户ID 事件ID 1 1 1 2 2 1 3 3 1
我遇到的问题是我需要返回所有活动参与者以及他们最新的状态更新,但是有些情况下用户实际上并没有进行状态更新。
这是我的查询的样子:
SELECT EventAttendee.*, Users.UserName,Users.USERS_ID,
Users.ThumbnailPic,
Users.CountryName,
ISNULL(UserStatusUpdates.UserStatus,'No Updates')AS LastUpdate,
UserStatusUpdates.MediaTypeID,UserStatusUpdates.USERSTATUS_ID,(UserStatusUpdates.AddDate)
FROM EventAttendee
JOIN Users ON Events.UserID = Users.USERS_ID
OUTER APPLY (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 WHERE UserStatusUpdates.UserID = EventAttendee.UserID
WHERE EventAttendee.EventID = @EventID
AND Users.bDeleted = 'False'
AND Users.bSuspended = 'False'
END
如何找回未更新的用户?
【问题讨论】:
-
我不明白背靠背在哪里 - WHERE TempUserStatusUpdates.UserID = EventAttendee.UserID WHERE EventAttendee.EventID = @EventID
-
对不起,这是一个错误,我已将其改回 UserStatusUpdates。