0

也许标题不是很清楚,但我真的无法为它起一个正确的命名。

我正在尝试使用以下表格在表格中选择一个人的所有朋友:

Table friends
column name user1
column name user2

我得到了以下查询

SELECT users1.username,users2.username FROM friend_request
 JOIN users AS users1 ON friend_request.user1 = users1.id
  INNER JOIN users AS users2 ON friend_request.user2 = users2.id

但是,这显然会返回两个名称。

Foobar | Dummy

如何在一个结果中排除/获取有问题的朋友?澄清 user1.username 是否不是我正在寻找的 show users.2username 和 verse visa。

Dummy

提前致谢。

编辑:

我不确定两列中的哪一列包含正确的用户。我正在寻找 Dummy,但当我加入他们时,我会得到 Foobar 和 Dummy,但我只想了解 Dummy。因为 foobar 是查找自己的朋友的人。希望这可以帮助。

4

1 回答 1

0

这应该得到你想要的......做一个工会。第一个查询应用了 where 子句,在“user2”字段中预期您开始的人,因此您将加入“其他”人(user1 字段)。然后工会应用反向...寻找第一个位置的主要人员(user1),但在 user2 字段(其他人)上进行连接

SELECT 
      u.username
   FROM 
      friend_request fr
         JOIN users u 
            ON fr.user1 = u.id
   where
      fr.user2 = ThePrimaryPerson
UNION
SELECT 
      u.username
   FROM 
      friend_request fr
         JOIN users u 
            ON fr.user2 = u.id
   where
      fr.user1 = ThePrimaryPerson
于 2012-05-30T12:54:31.170 回答