检索2个联接表的相似列

猴子编码器

我需要得到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
戈登·利诺夫(Gordon Linoff)

只是使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章