我有两张桌子:
用户:
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
?如果是,如何做子查询?视频:我也需要用户信息(用户)
答案 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。