2011-11-13 98 views
1

我被困在爲我的網站製作共同朋友代碼的一點。我已經閱讀了一些帖子,但沒有幫助。共同的朋友Mysql查詢

這裏是我的MySQL查詢:

select * 
from friend_list 
where uid='7' 
    and status=1 
    and friend_id !='3' 
union 
select * 
from friend_list 
where uid='3' 
    and status=1 
    and friend_id !='7' 

這顯示登錄用戶的所有朋友和我訪問配置文件的朋友。 輸出是這樣的----

id uid  friend_id  status 
    36 7   4    1 
    39 7   5    1 
    40 7   8    1 
    1  3   4    1 
從這個表我想freind_id 4只因爲這是相互的

回答

1
SELECT * 
FROM friend_list AS f 
INNER JOIN friend_list AS mf ON f.friend_id = mf.friend_id 
WHERE f.uid = 7 
    AND f.status = 1 
    AND mf.uid = 3 
    AND mf.status = 1 
+0

而不是'SELECT *',你可能只想'SELECT f.friend_id'將數據拉入你的應用程序。 –

+0

你好,感謝您的幫助。你的查詢幫了我很多。感謝它像一個魅力工作。我從5個小時就陷入了這個問題。謝謝 –

0

我剛開始學習MySQL,我已經解決了這個問題。

personID friendID 
6   10 
6   2 
6   3 
8   1 
8   2 
8   3 

/* query for friends */ 
select f.personID, p.personID, firstName, lastName 
from person p 
inner join friends f on f.friendID = p.personID 
where f.personID = 6; 

/* query for common friends */ 
select f1.personID 'personID 1', f2.personID 'personID 2', f1.friendID 'common friend' 
from person p 
inner join friends f1 on f1.friendID = p.personID 
inner join friends f2 on f2.friendID = p.personID 
where f1.personID = 6 and f2.personID = 8 and f1.friendID = f2.friendID; 

結果:

personID 1 personID 2 common friend 
6    8    2 
6    8    3 

雖然這不是直接回答你的代碼,你可以用我作爲一個來源。