2010-10-11 68 views
1

我試着去獲得通過朋友表一組「朋友式 - 通用」的:MySQL的「共同的朋友」查詢

然後我想SELECT * FROM用戶表其中userid是在朋友共同設置。

朋友
.ID ... ... DOM子
0.1 ..... 2 ..... 1
0.2 ..... 1 ..... 3
.3 ..... 1 ..... 4
.4 ..... 1 ..... 5
.5 ..... 2 ..... 4
。 6 ..... 2 ..... 6
.7 ..... 3 ..... 2
.8 ..... 3 ..... 6
.9。 .... 2 ..... 3

個用戶
.ID .... FNAME LNAME ...
0.1 .....安.....狐狸
0.2 .....搶.....史密斯
。 3 ..... amy oconnor
.4 ..... mark .... brown
.5 ..... jack .... hughes
.6 ... ..sian ....麻將

從上面的表格可以看出, 安(USER_1)是朋友2,3,4和5 ...和Rob(user_2)是朋友,1,3, 4和6.

Bu我怎麼寫一個查詢來獲取userIds從兩個給定用戶之間的共同朋友的usersTable中獲取?

我有一種感覺它是與UNION,但任何sugestions,歡迎...

謝謝你們

回答

2

這是我想出:

SELECT distinct fic.* from users l 
JOIN friends fol ON (fol.dom=l.id OR fol.sub=l.id) 
JOIN users fic ON (fol.dom=fic.id OR fol.sub=fic.id) 
JOIN friends fofic ON (fofic.dom=fic.id OR fofic.sub=fic.id) 
JOIN users r ON (r.id=fofic.dom OR r.id=fofic.sub) 
WHERE r.id=1 AND l.id=2 AND fic.id NOT IN (1,2); 

我別名表fic =共同朋友,fofic =共同朋友的朋友。我從「左」用戶開始,找到他的朋友,找到與「正確」用戶相匹配的朋友。

最後的「不在」是阻止我們走「艾米是_的朋友是艾米的朋友」。