Sql查询建议朋友的朋友

时间:2014-09-30 05:58:51

标签: sql sql-server

我想要使用SQL Server检索朋友的朋友。谁能帮我。

下面是我的朋友表结构,如果状态为2则表示朋友不是朋友

ID |用户ID | FriendID |用户名|朋友名称| RequestDate |状态| StatusUpdatedDate | IsBlocked

以下是UserMaster表格结构

UserId |用户名|电子邮件| DateOfBirth |语言

提前致谢

1 个答案:

答案 0 :(得分:0)

此查询会为您提供朋友的朋友:

SELECT DISTINCT
  f1.ID,
  f2.FriendID AS FriendOfFriendID
FROM
  (
    SELECT
      ID,
      FriendID
    FROM
      friends
    WHERE
      UserID=<LoggedInUserId> AND
      Status=2
  ) AS f1
  INNER JOIN friends AS f2 ON
    f2.ID=f1.FriendID
WHERE
  f2.Status=2;

f1是一个derived table,可以为您提供ID以及他们的FriendID。然后通过使用f1的FriendID在f2中链接,再次将其链接到朋友(f2)以链接到FriendOfFriendID(f2.FriendID)。

查询执行DISTINCT selection过滤掉等于朋友的朋友(其中2个朋友可能会分享一些朋友)。