0

私は2つのテーブルを持っています。1つはユーザー情報を保持するユーザー用で、もう1つは友達用です。

users_table   :  id , username , avatar
friends_table :  id , u1_id , u2_id 

今、私は彼のプロフィールで各ユーザーの友達を見せたいです

そして私は1つのクエリでそれをやりたい

したがって、友達テーブルでは、誰が友情をリクエストしたかに基づいて、ユーザーはu1_idまたはu2_idに入る可能性があります。

そして、私は各友達をusers_tableに参加させて、彼のユーザー名とアバターを取得したいので、簡単にはできません

select * from friends_table where u1_id = $profile_id || u2_id = $profile_id

だから私は2つのクエリを実行する必要があります

select f.u1_id , u.username , u.avatar from friends_table f join users_table u on f.u1_id = u.id
where f.u2_id = $profile_id 

select f.u2_id , u.username , u.avatar from friends_table f join users_table u on f.u2_id = u.id
where f.u1_id = $profile_id 

1つのクエリでこれを行う方法はありますか?

またはこのようなもの

select f.u1_id ,  f.u2_id , u.username , u.avatar from friends_table where u1_id = $profile_id || u2_id = $profile_id

if( u1_id = $profile_id )
join users_table u on f.u2_id = u.id

if( u2_id = $profile_id )
join users_table u on f.u1_id = u.id

私の問題は参加部分にあります。プロファイルIDの現在の所有者ではなく、友達IDでusres_tableを使用してfriends_tableに参加したいです。

4

1 に答える 1

0
select u.id,
    u.username,
    u.avatar
from friends_table f
join users_table u on f.u1_id = u.id || f.u2_id = u.id
where u.ID <> $profile_id
    and (f.u1_id = $profile_id || f.u2_id = $profile_id)
于 2012-05-16T17:28:33.230 に答える