2012-03-11 31 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