我需要得到2个用户的所有共同朋友(dummy4和dummy 5),然后检索他们的所有fname,lname和个人资料图片。
用户信息
id fname lname profile_pic
1 barrack obama 1.jpg
2 tom jones 2.jpg
3 dummy1 dummy1 3.jpg
4 dummy2 dummy2 4.jpg
5 dummy3 dummy3 5.jpg
6 dummy4 dummy4 6.jpg
朋友
counter user_id friend_id request_status
1 2 1 friend
2 4 5 friend
3 3 4 friend
4 5 3 friend
5 1 6 waiting
6 6 3 friend
7 1 3 friend
8 2 6 waiting
9 1 4 friend
10 3 2 friend
11 5 1 canceled
12 4 6 friend
这是我尝试过的查询
SELECT profile_pic, fname, lname FROM
user_info JOIN friend ON
(friend.friend_id = user_info.id OR friend.user_id = user_info.id) AND
((friend.user_id = 3 OR friend.friend_id = 4) AND
(friend.user_id = 4 OR friend.friend_id = 3))
AND friend.request = 'friend' GROUP BY user_info.id
但它什么也没返回。
我想使结果像这样
id fname lname profile_pic
1 barrack obama 1.jpg
5 dummy1 dummy1 5.jpg
6 dummy4 dummy4 6.jpg
只是使用exists
怎么样?
SELECT u.*
FROM user_info u
WHERE EXISTS (SELECT 1
FROM friend f
WHERE u.id IN (f.user_id, f.friend_id) AND
$friend1 IN (f.user_id, f.friend_id) AND
f.request_status = 'friend'
) AND
EXISTS (SELECT 1
FROM friend f
WHERE u.id IN (f.user_id, f.friend_id) AND
$friend2 IN (f.user_id, f.friend_id) AND
f.request_status = 'friend'
) AND
u.id NOT IN ($friend1, $friend2);
我不确定您如何代表朋友。在示例数据中没有所谓的“ dummy5”,因此它们仅由上述代码中的变量表示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句