2015-04-04 71 views
3

我在MySQL應用程序中加入了一個問題,該連接假設是我的作業。
比方說,我得到了下面的模式:關於多個關鍵事件的MySQL連接操作

User { 
    id: int, 
    name: string, 
} 

Friend_Pivotal { 
    user_rec_id: foreign key on user.id, int 
    user_inv_id: foreign key on user.id, int 
    status: string, 
} 

我希望得到什麼:「選擇與他們的朋友所有用戶」

我想收到有關作爲他朋友的用戶和用戶的ID的信息。朋友的定義是:

user_rec_id is the same as user.id or user_inv_id is the same as user.id 
    and 
    status is 'accepted' 

我知道這可能不容易在一個單一的查詢來獲取,但我不是在MySQL好,併爲我指明方向怎麼做會更讚賞。

回答

1

你可以加入用戶和關鍵的這個條件:

on u.id = p.user_rec_id or u.id = p.user_inv_id 

生活的jsfiddle:http://sqlfiddle.com/#!9/0b313/2/0

select 
    * 
from 
    myuser as u join friend_pivotal as p on u.id = p.user_rec_id or u.id = p.user_inv_id 
where 
    status = 'accepted'; 

這將顯示的用戶列表中加入了與他/她的朋友