2012-06-12 62 views
0

假設我有用戶並且該用戶可以成爲朋友。我有一張用戶和用戶數據表,以及一張友誼表(連接ID,用戶ID,用戶ID)。mySQL查詢 - 抓取與用戶x是朋友的用戶

在mySQL中可以執行的單個查詢是否會抓取用戶表中與用戶x有朋友關係的所有用戶?事實上,用戶x的id可能在友誼表中的一個插槽或b插槽中,這使得這比我想象的更加複雜。

編輯淨度:

我需要所有的用戶表中的數據爲當前用戶的朋友的。因此,如果當前用戶是友誼表中的用戶a,則需要用戶b的用戶數據,反之亦然。我想根據友情表中的關係結束所有當前用戶的朋友(來自用戶表)的所有數據。

回答

4

使用SQL Fiddle你可以這樣做:

SELECT u.name as friends 
FROM friendship AS f 
JOIN users AS u ON 
    ((u.user_id = f.user_a_id AND f.user_b_id = @user_id) 
    or (u.user_id = f.user_b_id AND f.user_a_id = @user_id)) 
where u.user_id is not null; 

在此@user_id是要找到朋友的用戶和輸出的ID號的朋友的名字。

+0

這對我來說不起作用,因爲左連接導致它返回所有的友誼,而不管用戶和匹配的用戶。當我將左連接更改爲其工作的連接時。謝謝! –

+0

很高興工作。我將會把它變成一個加入,讓任何人在未來看到這一點。很高興我能幫上忙。 :) – Kyra

0
SELECT users.user_id FROM users, friends WHERE (users.user_id=friends.user_a_id AND friends.user_b_id=x) OR (users.user_id=friends.user_b_id AND friends.user_a_id=x);