2010-02-13 70 views
0

我有一個表用戶有兩個字段:id,名稱和另一個表有2個字段的朋友:userid1 userid2。MySQL內連接2列

所以這意味着userid1是userid2的好友。我想,有一個內部或左的連接顯示此:

userid1名(得到了來自用戶表)是朋友與userid2名稱(從用戶表了)

東西

SELECT * FROM朋友INNER在friends.userid1 = users.id和friends.userid2 = users.id上加入用戶,但這不起作用。

有好的解釋請好嗎?

如果,例如我在用戶表中的下一個細節: ID:1名稱:FinalDestiny ID:2名:喬治

,並在朋友表中的下一個細節: ID1:1 ID2 :2

因此,這意味着1是朋友與2

我有一個查詢需要得到的1名和第2名和呼應,他們是朋友

FinalDestiny是喬治的朋友

回答

2

我知道你指定要這一個做加盟,但在我看來像你需要兩個。我相信這個查詢會給你你需要的東西:

SELECT u1.Name, u2.Name
FROM Users u1, Users u2, Friends f
WHERE u1.id = f.userid1 AND u2.id = f.userid2

我與上Users.id = Friends.userid1友表連接用戶表。然後,我使用(新表).userid2 = Users.id中的用戶表加入此新表。這導致了一個包含4列的表格。這些列是朋友表的原始2列以及朋友名稱的2列。 u1,u2f,並參考加入的三個表格。用戶表與朋友表連接兩次。 u1是在Friends.userid1 = User.id上加入的Users表的副本。 u2是在Friends.userid2 = User.id上加入的Users表的副本。

從這張有4列的表中,我只選擇朋友的名字。

讓我知道是否需要更多解釋。

+0

Whats u1.name?請使用我的規格,用戶表,朋友表和我的字段進行查詢 – FinalDestiny 2010-02-13 23:25:15

+0

編輯說明。 – 2010-02-13 23:29:37

2

您檢查用戶是自己的朋友。使用OR在你的選擇,以配合用戶的朋友:

SELECT * FROM friends INNER JOIN users ON friends.userid1 = users.id OR friends.userid2 = users.id 
0

如果,例如我在用戶表中的下一個細節: ID:1名稱:FinalDestiny ID:2名:喬治

和在朋友表中的下一個細節: ID1:1個ID2:2

因此,這意味着1是朋友與2

我需要一個查詢來獲取的1名和第n 2和火焰呼應,他們是朋友

FinalDestiny是朋友喬治