如何获得相互朋友,追随者和追随者的名单

时间:2014-02-01 13:24:20

标签: asp.net sql sql-server database

我在这里读了许多关于共同朋友以及跟随者和追随者的问题,但我无法解决我的问题,我有两张这样的表。

  • User_table(UID,名称)
  • Relation_table(RID,UID,UIDF)

例如在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

我的问题是:

  1. 如何获取共同朋友的名单?

  2. 如何获取以下列表?

  3. 如何获得粉丝列表?

  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
相关问题