2011-03-02 5 views
1

私は、特定のユーザー "friends"が誰であるかを見つけるためにinql join inorderを構築する方法についてはあまりよく分かりません。例えば2つのmysqlテーブル間の "友人"の関係

私は2つのテーブル

User Table 
u_ID | u_Name 
------------- 
1  | bob 
2  | jill 
3  | jack 
4  | susan 

Friends Table 
f_ID | u_ID1 | u_ID2 
-------------------- 
1 | 1 | 2 
2 | 3 | 1 
3 | 4 | 2 

を持っている私には、例えば、ボブスの友人のすべてを取得する方法、またはjillsの友人のすべてを見つける必要があります。

友人は結果を重複させることはできません。

Ie. (u_ID1 = 1、u_ID2 = 2)または(u_ID1 = 2、u_ID = 1)の行を持つことはできますが、どちらも技術的には同じです。ここで

は私の 間違ったクエリ事前に

SELECT u.u_Name 
FROM user u 
INNER JOIN friends f ON (f.u_ID1 = '1' OR f.u_ID2 = '1') 

おかげで


ソリューション

、クリスBabicが解決のための返信を確認

も参加しますが、動作するはずです。これは、STRAIGHTを使用してよそ(未テスト)これは動作するはずボブの友人のすべてについて

答えて

3

皆をありがとう:

select u.u_Name 
from friends f, user u 
where (f.u_ID1 = '1' and u.u_ID = f.u_ID2) 
    or (f.u_ID2 = '1' and u.u_ID = f.u_ID1) 
+0

これは機能しました!ありがとう – Stevanicus

1

を助ける

select u.u_Name 
FROM user u 
inner join friends f1 on f1.u_uID1 = u.u_ID 
inner join friends f2 on f2.u_uID2 = u.u_ID 
where u.u_ID = 1 
+1

ゼロの結果が得られます。 – Stevanicus

0

これを試してみてください。

SELECT u1.u_Name as user1 , u2.u_Name as user2 
FROM user as u1 INNER JOIN friends ON u1.u_ID=friends.u_ID1 
INNER JOIN user as u2 ON u2.u_ID=friends.u_ID2 
関連する問題