在LEFT JOIN中获取共同朋友的数量

时间:2016-05-02 00:32:18

标签: mysql join subquery left-join inner-join

我有两张桌子:

用户

id | user | fname | sname | photo
1  | Igor | Igor  | Souza | profile.jpg
2  | John | John  | Jhow  | pic.png
3  | Lucas| Lucas | Coll  | photo.jpg

朋友

id | friend1 | friend2 | status
1  | 1       | 3       | 2
2  | 1       | 2       | 2
3  | 3       | 2       | 2

在好友表中,status = 2表示他们是朋友,friend1是发送好友请求的用户。

要选择已登录用户的朋友,我做了($userID对应于访问的用户ID个人资料页面):

SELECT u.user, u.fname, u.sname, u.photo
FROM friends f
INNER JOIN users u
ON (u.id = f.friend1 AND f.friend1 <> '$userID') OR (u.id = f.friend1 AND f.friend2 <> '$userID')
WHERE (f.friend1 = '$userID' OR f.friend2 = '$userID') AND f.status = 2

我想记录用户登录($userIDLog)和访问的个人资料页面用户($userID)之间的共同朋友。但我不知道如何执行此操作,在count上的子查询中使用LEFT JOIN?如果是,如何做子查询?视频:我也需要用户信息(用户

1 个答案:

答案 0 :(得分:1)

首先让我们假设$ userId = 1和$ userIDLog = 2,现在我们可以找到已登录用户的朋友。

std

其他用户朋友类似地通过

给出
using std::whatever

现在,如果你加入他们,你有答案。

SELECT friend2 as f FROM friends where friend1 = 1 
UNION SELECT friend1 as f FROM friends WHERE friend2 =1

他们俩共同拥有的唯一朋友是3,你可以得到这个查询的答案数= 1。