2016-03-08 102 views
0

我有表friendsuser_id friend_id date。 這是行意味着:user_id在另一個日期添加另一個用戶給朋友MySql非平凡選擇

我需要提出請求:獲取用戶,爲他們的每個請求,他們有迴應。

得到所有用戶x:所有(X,Y,日期)=>(Y,X,DATE2):日期2>日期

我試着寫請求時,就應該對所有的情況下工作?

select f.user_id from friend f 
group by f.user_id 
having 
    (select count(f2.user_id) from friend f2 
     where f2.date > f.date and f2.friend_id = f.user_id 
     group by (f.friend_id)) = count(f.friend_id) 

我的sql技能不好。

+0

也許你可以提供的樣本數據和預期的結果。你的查詢的一個問題是'有'出現在'group by'之後。 – sgeddes

+0

你想要什麼結果? –

+0

@Bernd Buffen用戶列表,他們每個人都對每個請求都向同一用戶發回,這個用戶的回覆請求 – punksta

回答

1

我這一定是工作的事情。這將提供所有的用戶,他們都反向

SELECT 
    f.user_id 
FROM friend f 
LEFT JOIN friend f2 ON 
    f.friend_id = f2.user_id 
AND 
    f2.friend_id = f.user_id 
AND 
    f2.date > f.date 
GROUP BY 
    f.user_id 
HAVING 
    count(f.user_id) = count(f2.user_id); 

請讓我知道它是否適合你

+0

看起來像是正確的。 – punksta