构建查询以返回用户和用户的朋友

时间:2012-08-30 08:58:05

标签: sql

我有一个朋友列表,我保持两个用户之间的友谊关系,然后加入他们的帖子等:

(user_a, user_b, relation type) 

以下是一些示例数据:

u_f_id | user_a | user_b | relation_type 
----------------------------------------
  12   | 20     |  23    |    1           //friend
  13   | 30     |  20    |    2           //family

我还有一个用户表,其中我保留了用户的姓名和详细信息。

我正在构建一个返回用户他们的朋友的查询。例如,我需要用户20的朋友,如果它出现在user_auser_b中。

我尝试了以下内容:

SELECT CASE
         WHEN user_friends.user_a = 20 THEN user_friends.user_b
         ELSE user_friends.user_a
       END AS friend,
       user_friends.*
FROM   user_friends
WHERE  user_friends.user_a = 20
        OR user_friends.user_b = 20

1 个答案:

答案 0 :(得分:0)

以下是您的用户。

select 
    case user_a when 20 then user_b else user_a end as user_id
from user_friends
where 20 in (user_a, user_b)
and relation_type=1
union 
select 20