0

假设我有用户并且用户可以成为朋友。我有一个用户和用户数据表,以及一个友谊表(连接 id、用户 a id、用户 b id)。

有没有我可以在 mySQL 中执行的单个查询,它可以从用户表中获取与用户 x 是朋友的所有用户?用户 x 的 id 可能位于友谊表中的 a 槽或 b 槽中,这一事实使这比我想象的要复杂得多。

编辑清晰:

我需要当前用户的朋友的用户表中的所有数据。因此,如果当前用户是友谊表中的用户 a,我需要用户 b 的用户数据,反之亦然。我想根据友谊表中的关系得到所有当前用户的朋友(来自用户表)的所有数据。

4

2 回答 2

4

使用SQL Fiddle你可以:

SELECT u.name as friends
FROM friendship AS f
JOIN users AS u ON 
  ((u.user_id = f.user_a_id AND f.user_b_id = @user_id)
  or (u.user_id = f.user_b_id AND f.user_a_id = @user_id))
where u.user_id is not null;

@user_id是您要为其查找朋友的用户的 ID 号,输出是朋友的姓名。

于 2012-06-12T19:48:11.367 回答
0
SELECT users.user_id FROM users, friends WHERE (users.user_id=friends.user_a_id AND friends.user_b_id=x) OR (users.user_id=friends.user_b_id AND friends.user_a_id=x);
于 2012-06-12T19:43:37.483 回答