2

2人のユーザー間の友情関係を維持し、投稿などに参加する友人リストテーブルがあります。

(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

また、ユーザーの名前と詳細を保持する users テーブルもあります。

ユーザーとその友達の両方を返すクエリを作成しようとしています。たとえば、user_aまたはに表示される場合、ユーザー 20 の友達が必要user_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
4

1 に答える 1

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   
于 2012-08-30T13:09:39.950 に答える