我在这里读了许多关于共同朋友以及跟随者和追随者的问题,但我无法解决我的问题,我有两张这样的表。
例如在user_table中有4个用户
UID | Name
------------------
1 | Kim Tessman
2 | Nella Ohler
3 | Adria Larose
4 | Huey Errico
而Relation_table有这些数据
RID | UID | UIDF
------------------
1 | 1 | 2
2 | 2 | 1
3 | 1 | 4
4 | 4 | 3
5 | 4 | 1
我的问题是:
如何获取共同朋友的名单?
如何获取以下列表?
如何获得粉丝列表?
请谁能解决这个问题谢谢:)
答案 0 :(得分:1)
我猜测Relation_Table中的UID列是用户,而UIDF是他们关注的人。以下是查找某个人关注者的SQL查询。被关注的人是同一个查询,您只需关注其他名称列或切换列顺序。
这是谁跟踪谁的列表。它也是被关注者的名单。
SELECT FollowingUser.UID as FollowingUserID, FollowingUser.Name, BeingFollowed.UID AS BeingFollowedID, BeingFollowed.Name AS BeingFollowedName
FROM User_table AS FollowingUser INNER JOIN
Relation_Table AS r ON FollowingUser.UID = r.uid INNER JOIN
User_table AS BeingFollowed ON r.uidf = BeingFollowed.UID
此查询为您提供了共同朋友的列表 - 但它给出了关系的反转。如果这很重要,请将其添加到最后where FollowingUser.UID > BeingFollowed.UID
SELECT FollowingUser.UID AS FollowingUserID, FollowingUser.Name, BeingFollowed.UID AS BeingFollowedID, BeingFollowed.Name AS BeingFollowedName
FROM User_table AS FollowingUser INNER JOIN
Relation_Table AS r ON FollowingUser.UID = r.uid INNER JOIN
Relation_Table AS r1 ON r.uid = r1.uidf AND r.uidf = r1.uid INNER JOIN
User_table AS BeingFollowed ON r1.uid = BeingFollowed.UID