我有几张桌子
User (UserId)
Event (EventId)
AttendingEvent (UserId,EventId)
Friends (UserId,UserId)
我想编写一个查询,该查询可以返回事件,其中我知道事先身份的特定用户的朋友会按照最多朋友参加的事件排序。
答案 0 :(得分:1)
这应该可以解决问题。在未来尝试首先进行一些研究或至少展示一些尝试寻求解决方案以避免贬值。如果有帮助,请标记为答案。
这将按照参加的朋友数量的顺序返回您的朋友正在参加的活动。
WITH TheEventsCounted as (SELECT EventId, Count(UserId) FROM AttendingEvent WHERE UserId IN
(SELECT * FROM Friends WHERE MyUserId = @ID)
GROUP BY EventId)
SELECT * FROM Event
WHERE EventId IN TheEventsCounted
ORDER BY Num