我的MySQL表結構是這樣的。SQL獲取朋友和朋友的朋友
USER
int id
varchar username
FRIEND_LIST
int user_id
int friend_id
對於每個朋友關係,我在FRIEND_LIST中插入2條記錄。 如果用戶1爲用戶2的朋友那麼接下來的行插入FRIEND_LIST
1,2
2,1
我想要得到的特定用戶的朋友的朋友的朋友。
select應該返回列a,b,c。
a: user_id
b: friend_id
c: username (username of friend_id)
If 1 is friend of 2 and 3.
2 is friend of 3, 4 and 5
3 is friend of 5,6,7
然後查詢得到1的朋友的朋友的朋友應該返回:
1 2 two
1 3 three
2 1 one
2 3 three
2 4 four
2 5 five
3 1 one
3 5 five
3 6 six
3 7 seven
我能得到這個行與單個查詢?
UPDATE ANSWER:我修改了DVK的答案,這是返回我正在尋找的查詢。
SELECT friends.user_id, friends.friend_id, username
FROM
FRIEND_LIST friends, USER
WHERE
CAT_USER.id = friends.friend_id
AND
friends.user_id = 1
UNION
SELECT
fof.user_id, fof.friend_id, username
FROM
FRIEND_LIST friends, FRIEND_LIST fof, USER
WHERE
USER.id = fof.friend_id
AND
friends.friend_id = fof.user_id
AND
friends.user_id = 1;
我嘗試的第一個查詢,但它說,user_id是曖昧 – Enrique 2010-05-10 22:54:06
我將使用第一查詢,第二個給了我錯誤的結果。 非常感謝! – Enrique 2010-05-10 23:54:48