2017-05-17 11 views
0

私は2つのテーブルがあります。選択友人

そう
**user** 
-id 
-first_name 

**friends** 
-id 
-user_id 
-friend_id 

を、テーブル 'ユーザー' は、

'id' 'first_name' 
1  name_1   
2  name_2   
3  name_2   

を持っていると「友人の

'id' 'user_id' 'friend_id' 
1  1   2 
2  2   3 
3  3   4 
4  3   5 

だから私は取得する必要があります友人の友達、友人の友だちはusers tableから直接お友達に​​なりました。

私は私はあなたが結果セットからの友人を探している対象のユーザーを除外しない以外は、クエリとずっと間違って表示されていないこの

select distinct users.id 
from friends a 
join friends b on b.user_id = a.friend_id 
join users on users.id = b.friend_id 
where user.id = 3 
+0

はそれを不足しているために私に1 –

+0

期待される結果を提供する、と恥。 – s78

答えて

0

のようなものを試してみました。つまり、ユーザー3に友だちが3というユーザーを指している友人がいる可能性がありますので、この提案は望ましくありません。

SELECT DISTINCT 
    u.id, 
    u.first_name 
FROM friends a 
INNER JOIN friends b 
    ON a.friend_id = b.user_id 
INNER JOIN users u 
    ON u.id = b.friend_id 
WHERE a.user_id = 3 AND 
     b.friend_id <> a.user_id 
+0

@Strawberryはいあなたは正しいあるべき 'user.id = 3 'のために予想される結果 –

+0

ああ、どうぞ。あなた自身がとても熱心になる必要はありません:-) – Strawberry

+0

私は同じ結果を得ます。 'user.id = 3'は' user_id 2 **にフレンドがあるので '1 'を返します** user_id 1 ** – s78

関連する問題