2012-03-11 28 views
-3

事件我有几桌SQL让你的朋友出席

User (UserId) 
    Event (EventId) 
    AttendingEvent (UserId,EventId) 
    Friends (UserId,UserId) 

我想编写一个查询,可以返回,其中一个特定的用户,我知道ID事件事先有朋友说会参加这次活动的订购人数最多的朋友参加。

+5

“我想写一个查询” - 什么阻止你?你有什么尝试? – 2012-03-11 01:55:17

回答

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