2017-08-29 43 views
-1

我有一個場景,其中我將useremail存儲在表user_info中。其結構如下。在同一張表中獲取朋友列表信息

user_info(_id,email)

但一個用戶可以是其他users.So的朋友爲目的,我還有一個表user_friend。下面

user_friend(_id,userA , userB)

其結構給出現在假設有5個用戶A,B,C,d和E.我們得到了表值這樣的事情。

USER_INFO

_id  email 
1  [email protected]  
2  [email protected]  
3  [email protected]  
4  [email protected] 
5  [email protected]  

user_friends

_id userA userB 
1  1  2 
2  1  3 
3  1  4 
4  5  1 

它的平均A是B的朋友,C,d和E.我想要得到這些電子郵件,但我無法考慮任何適當的查詢。 我正在使用左連接,但似乎不能正常工作

獲得1(A @ ...)的好友。但它不能正常

SELECT DISTINCT email FROM user_info AS UI 
LEFT JOIN user_friends AS UF 
ON UI._id = UF.userA 
LEFT JOIN user_friends AS UF2 
ON UI._id = UF2.userB 
WHERE UF2.userA = '1' || UF2.userB ='1' 

工作有什麼建議?

+0

這一個已經 – Strawberry

+0

好之前回答感謝您的迴應,我找到了答案! –

回答

0

它會是這樣的。

選擇電子郵件從USER_INFO WHERE _id IN(從user_friends選擇用戶A,其中用戶B = '1' 聯盟中的所有選擇用戶B從那裏用戶A = '1' user_friends)

0

使用UNION讓所有朋友的電子郵件

(SELECT 
    u2.email 
FROM user_info u 
LEFT JOIN user_friends f ON f.userA = u._id 
LEFT JOIN user_info u2 on u2._id = f.userB 
WHERE u._id = 1) 
UNION 
(SELECT 
    u2.email 
FROM user_info u 
LEFT JOIN user_friends f ON f.userB = u._id 
LEFT JOIN user_info u2 ON u2._id = f.userA 
WHERE u._id = 1) 
+0

嘿,我真的很感激你的答案,但我想我找到了一個更簡單的。看看這個。 它會是這樣的。 >從user_info中選擇電子郵件WHERE _id IN(從user_friends中選擇userA = userA的userA)聯盟所有從user_friends中選擇userB,其中userA ='1') –